#ios #objective-c #backbarbuttonitem
#iOS #objective-c #backbarbuttonitem
Вопрос:
Я добавил navigationItem.backBarButtonItem
, когда перейду на новую страницу, как в следующем коде, но я хочу добавить Timer
для изменения некоторого изображения, прежде чем вернуться к первому backBarButtonItem
.
UIViewController *ReconnectView = [[AITReconnectView alloc] initWithNibName:@"AITReconnectView" bundle:nil] ;
ReconnectView.edgesForExtendedLayout = UIRectEdgeNone;
self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"Back", nil) style:UIBarButtonItemStyleBordered target:nil action:nil];
[self.navigationController pushViewController:ReconnectView animated:YES];
Например: когда я нажимаю backBarButtonItem
, он будет работать в Timer
течение 3 секунд. А затем вернитесь к первому представлению.
У меня есть поиск некоторой информации, но он только перезаписывает новый метод для backBarButtonItem
.
Как добавить Timer
метод in backBarButtonItem
, но сохранить исходный метод backBarButtonItem
?
Заранее спасибо.
Комментарии:
1. Можете ли вы поделиться своим кодом?
2. Apple не разрешает нам обрабатывать событие
backBarButton
. Вы можете создать backBarButton самостоятельно и установить для него значениеleftBarButtonItem
, а также обработать событие для него3. Если пользователь ожидает возврата, почему вы откладываете событие?
4. @MarkRamotowski Я хочу изменить изображение и показать некоторую информацию для пользователя.
Ответ №1:
Есть два способа:
- Создайте свою собственную кнопку возврата (аналогичную родной) и метод выбора и назначьте его кнопке:
UIBarButtonItem *addButton = [[[UIBarButtonItem alloc] initWithTitle:@"BackToVcA" style:UIBarButtonItemStyleBordered target:self action:@selector(addAction:)] autorelease]; self.navigationItem.rightBarButtonItem = addButton;
- Используйте метод жизненного цикла UIViewController
viewWillDisappear
илиviewDidDisappear
.
Надеюсь, это то, что вы ищете.
Комментарии:
1. Я пытаюсь добавить таймер в
viewWillDisappear
илиviewDidDisappear
. Но представление возвращается к первому представлению и не дождалось завершения таймера. Когда представление переходит к первому представлению, таймер продолжает отсчет…2. Я знаю первый способ, который вы публикуете. Но я не знаю, как вернуться к первому представлению с помощью кода.
Ответ №2:
- Если вы хотите отложить переход к первому представлению на 3 секунды, просто добавьте,
[NSThread sleepForTimeInterval:3.0];
кviewWillDisappear
методу второго представления. - Если вы хотите выполнить вызов метода в objective C, тогда
[self performSelector:@selector(methodName) withObject:self afterDelay:3.0];
все должно работать нормально. Поделитесь кодом для получения дополнительной информации.