Как обрабатывать два перехода к одному и тому же контроллеру представления?
-
09-12-2019 - |
Вопрос
У меня есть приложение для iPhone, которое я сейчас создаю в XCode 4.3 с помощью Storyboard.У меня есть «корневой» контроллер представления с двумя (2) последовательностями для контроллера представления, содержащего UIWebView.Я хочу иметь возможность идентифицировать переход (уже установил уникальные идентификаторы для обоих переходов), чтобы я мог «перенести» правильный контент в UIWebView на основе того, какой переход был активирован в «корневом» контроллере представления.
Я думаю, что мне нужно использовать метод «prepareForSegue», но не знаю, к чему это приведет.Где я могу узнать, как бороться с двумя переходами, идущими к одному и тому же контроллеру представления?(Я погуглил и не нашел ничего подходящего для моей ситуации).
Вот код, который я использую:
-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"helpSegue"]) {
NSLog(@"helpSegue");
}
else if ([segue.identifier isEqualToString:@"reportSegue"]) {
NSLog(@"reportSegue");
}
}
Решение
Ты не позвонишь -prepareForSegue:sender:
, вы реализуете его в своем контроллере представления.В переопределении этого метода вы можете проверить переход identifier
свойство (переход передается как параметр):
if ([segue.identifier isEqualToString:@"Segue Numero Uno"]) {
// do something here
}
Это позволяет вам предпринять какие-то действия в зависимости от того, какой переход вызывает переход.Вы можете установить идентификатор для каждого сегмента в редакторе раскадровки.
Обновлять: Судя по коду, который вы предоставили в своем комментарии (который я добавил к вашему вопросу), теперь у вас есть правильная идея.На данный момент это всего лишь вопрос старой доброй отладки.Некоторые вещи, которые стоит проверить:
Является ли контроллер представления в вашей раскадровке (т.тот, к которому приводят рассматриваемые переходы), настроенный как экземпляр класса, который реализует это
-prepareForSegue:sender:
?Проверьте тип контроллера в раскадровке.Выполняйте строки, которые вы используете в своем коде точно соответствовать идентификаторам, которые вы установили для своих переходов в раскадровке?Заглавные буквы, орфография, пунктуация и пробелы учитываются.
твой
-prepareForSegue:sender:
вызываемый метод?Поставьте там точку останова и отлаживайте.Если он вызывается, каков идентификаторsegue
это прошло?Если он не вызывается, контроллер представления в раскадровке не имеет нужного класса.