Кнопка «Назад» по умолчанию… по умолчанию :). Я приведу вам быстрый пример. Создайте новый проект с одним представлением. Перейдите в раскадровку, щелкните контроллер одного представления, затем перейдите в меню «Редактор» -> «Встроить» -> «Контроллер навигации». Теперь вы увидите 2 контроллера представления: один является контроллером навигации, а второй — исходным контроллером представления. Вы заметите, что контроллер навигации теперь является начальным представлением приложения, и будет линия, соединяющая переходы, указывающая, что контроллер представления является корневым контроллером представления контроллера навигации. Затем добавьте еще один UIViewController (путем перетаскивания) рядом с исходным контроллером представления. Теперь у вас будет 3 контроллера представления, контроллер навигации, исходный контроллер представления и новый контроллер представления. Добавьте UIButton в левом верхнем углу исходного контроллера представления. Затем перетащите элемент управления с кнопки на новый контроллер представления и выберите переход к шоу. Если вы сейчас попробуете запустить приложение в симуляторе, вы сначала увидите исходный контроллер представления. Нажмите кнопку, и вы увидите новый контроллер представления с кнопкой «Назад»! Вы получите кнопку «Назад», даже не пытаясь, потому что она используется по умолчанию.
Изменить
Судя по комментариям, цель состоит в том, чтобы перейти прямо к MainViewController, если пользователь вошел в систему, и перейти к LogInViewController, если пользователь не вошел в систему.
Присвойте переходу push из LogInViewController в MainViewController идентификатор, перейдя к схеме, выбрав переход, перейдите к инспектору удостоверений и присвойте ему идентификатор. В ViewDidAppear LogInViewController проверьте, вошел ли пользователь в систему. Если это так, выполните переход. Это даст кнопку возврата на MainViewController контроллеру LogInView.
В моем приложении я делаю все немного по-другому.
Альтернатива: я делаю LogInViewController начальным контроллером представления приложения, но не встраиваю его в UINavigationController. Затем я добавляю MainViewController в раскадровку и встраиваю его в контроллер навигации. Я предлагаю встроить его в контроллер навигации, если у вас есть другие представления, которые вы хотите отобразить, и у вас есть кнопка «Назад» для MainViewController. Добавьте UIButton в LogInViewController и перетащите элемент управления из него в контроллер навигации. Выберите текущий модальный переход. Выберите переход в схеме раскадровки и в инспекторе атрибутов дайте ему имя, например «присутствует MainViewController». В методе ViewDidAppear LogInViewController проверьте, вошел ли пользователь в систему, и если это так, вызовите [self performSegueWithIdentifier:@"present MainViewController" sender:nil];
Это представит MainViewController, если пользователь вошел в систему, но не в противном случае. В MainViewController не будет кнопки «Назад», потому что это контроллер корневого представления контроллера навигации, который был представлен модально. Если вы хотите, чтобы верхняя левая кнопка была кнопкой для выхода пользователя из системы, вы можете добавить UIBarButton в левую часть MainViewController. Теперь перейдите к коду LogInViewController и добавьте - (IBAction) nameOfUnwindSegue : (UIStoryboardSegue *) segue{}
Вернитесь к раскадровке и перетащите управление от этой кнопки на панели к значку выхода в верхней части контроллера представления в раскадровке. Выберите nameOfUnwindSegue (вы можете назвать это как хотите). Это создает переход отката, который закроет контроллер представления. Вы можете указать идентификатор, щелкнув его в раскадровке, перейдя к инспектору атрибутов и присвоив ему идентификатор ". В методе prepareForSegue в MainViewController вы можете проверить, равен ли segue.identifier идентификатору, и если да, вызовите метод выхода из системы.
person
Josh Gafni
schedule
26.01.2015
UINavigationItem
. В противном случае, если вы правильно внедрили свое представление вUINavigationController
, кнопка «Назад» должна сгенерироваться автоматически. - person AstroCB   schedule 26.01.2015