1

У меня есть мнение, что корень представляет навигационный контроллер с контроллером контента, это то, как он выглядит: enter image description hereiPhone представляет и отклоняет навигационный контроллер просмотра в раскадровки?

NavigationController представлен модально и ProjectTypeSelectionView его корневой контроллер. Когда вы нажимаете кнопку выхода из системы, я хочу отказаться от модального представления и вернуться к LoginScreenViewController.

Так я установил в prepareSegue LoginScreen в качестве делегата:

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 

UINavigationController *destination = segue.destinationViewController; 

if ([[destination ] respondsToSelector:@selector(setDelegate:)]) { 
    NSLog(@"%@", destination); 
    [destination setValue:self forKey:@"delegate"]; 
} 
} 

, а затем внутри ProjectTypeViewController добавить этот метод:

- (IBAction)logout:(id)sender { 
     [self.delegate projectTypeSelectionViewControllerDidFinish]; 
} 

который вызывается при нажатии кнопки выхода из системы сливают. К моему удивлению, это не увольняет диспетчера. Ничего не происходит, даже ты все подключен.

Я проследил ошибку в этом - когда prepareSegue называется NavigationController's delagate установлен в LoginScreenViewController, в который входит назначение делегата ProjectTypeController в LoginScreenViewController.

Как я могу решить это правильно?

ответ

7
- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 

UINavigationController *destination = segue.destinationViewController; 
UIViewController *vc = [[destination viewControllers] objectAtIndex:0]; 
vc.delegate = self; 
} 

Чтобы сделать этот код более надежным вы можете проверить, если desitinationViewController является UINavigationController

 Смежные вопросы

  • Нет связанных вопросов^_^