переопределение поведения backBarButtonItem по умолчанию

#iphone #objective-c #uiview #uinavigationcontroller

#iPhone #objective-c #uiview #uinavigationcontroller

Вопрос:

Я сталкиваюсь с проблемами при навигации между представлениями, в основном у меня есть 3 представления:

  1. rootView
  2. просмотр1
  3. Просмотр2

Что я хочу сделать, так это когда я нажимаю на кнопку «Назад» View2 Я хочу, чтобы rootView загружался вместо загрузки view1 (который используется по умолчанию).

.. Я написал приведенный ниже код в моем view1.m, прежде чем запускать view2ViewController, код:

  UIBarButtonItem *back = [[UIBarButtonItem alloc] initWithTitle:@"Back" target:self action:@selector(someMethod:)];
self.navigationItem.backBarButtonItem = back;
-(void)someMethod:(id)sender{ [self.navigationViewCOntroller popToRootViewControllerAnimated:YES] }
  

Приведенный выше код не работает

Комментарии:

1. Не понимаю проблемы, разве вы только что не сказали, что отображаются как view1, так и view2? Разве это не ваша цель?

2. Да .., Это то, что я думал .., Но этого не происходит

Ответ №1:

Попробуйте это:

Чтобы перейти к представлению:

 Aview *aview =[[Aview alloc] initWithNibName:nil bundle:nil];
    settings.modalPresentationStyle = UIModalPresentationFullScreen;
    [self presentModalViewController:settings animated:YES];
  

Чтобы вернуться:

 [self dismissModalViewControllerAnimated:YES];
  

Итак, в вашем случае его:

 -(void)someMethod:(id)sender{ 
 Rootview *rootview =[[Rootview alloc] initWithNibName:nil bundle:nil];
        settings.modalPresentationStyle = UIModalPresentationFullScreen;
        [self presentModalViewController:settings animated:YES];
}
  

Комментарии:

1. Но, в моем случае .., действие «someMethod» не вызывается… Но я могу изменить текст backBarButtonItem как «вернуться к rootView».. Я делаю все эти изменения в viewDidLoad view1 в viewDidLoad …, поскольку backBarButtonItem необходимо настроить в предыдущем представлении

Ответ №2:

Вторая половина вашего вопроса неясна.

Попробуйте это [self.navigationController popToRootViewControllerAnimated:YES];

Надеюсь, у вас это сработает. С помощью этого вы можете перейти от View2 к вашему корневому представлению.

Комментарии:

1. Возможно, вторая половина моих вопросов сбивает с толку всех .., поэтому я удалил .. ее… Спасибо, проверю ваше предложение

2. Пожалуйста, не используйте детские текстовые сообщения.

3. Приношу свои извинения за оскорбление, которое было ненужным. Я хочу сказать, что если вы собираетесь писать ответ, найдите время, чтобы написать на правильном английском. Это помогает всем, кто посещает SO в поисках ответа, особенно тем, кто плохо читает по-английски.

4. Неважно !!… Я совсем не возражаю.. Каким-то образом набор методов действия не вызывается .., Но кнопка отображается в View2 с заголовком «вернуться к rootView», который я установил в viewDidLoad view1