我有一個2 controllers
月1日是self
和2是maincontroller
,在那裏我推maincontroller
在棧,所以後退按鈕會自動到來。的UINavigationController和後退按鈕動作
這裏我需要在用戶按下後退按鈕時發出警報。
我該怎麼做?
我有一個2 controllers
月1日是self
和2是maincontroller
,在那裏我推maincontroller
在棧,所以後退按鈕會自動到來。的UINavigationController和後退按鈕動作
這裏我需要在用戶按下後退按鈕時發出警報。
我該怎麼做?
或者您可以使用UINavigationController
的委託方法。當VC的後退按鈕被按下時,方法willShowViewController
被調用。
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated;
添加自定義後退按鈕與動作,並設置在行動快訊method.You從這裏可以添加自定義後退按鈕:http://www.applausible.com/blog/?p=401
創建一個按鈕,並給該按鈕的動作如下。
[self alert];
,並顯示報警時,攻過是
[self.navigationController popViewController];
在此之後,
self.navigationController.LeftBarButton = myButton;
後,這可能會幫助
什麼是提醒? – richy
@richy感謝評論這個舊的答案。該警報用於顯示問題中提示的警報。 –
創建自己的UIBarButtonItem
並將其設置爲leftBarButtonItem
的viewDidLoad
方法mainController
。例如(在這裏我使用了一個系統項目,但是您也可以創建一個不同的項目,詳情請參閱類別參考)。
UIBarButtonItem *leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(showAlertView:)];
self.navigationItem.leftBarButtonItem = leftBarButtonItem;
// only if you don't use ARC
// [leftBarButtonItem release];
其中
- (void)showAlertView:(id)sender
{
// alert view here...
}
首先使用
self.navigationItem.hidesBackButton = YES;
隱藏後退按鈕,然後創建自己的自定義按鈕:
UIBarButtonItem *backBtn =[[UIBarButtonItem alloc]initWithTitle:@"back" style:UIBarButtonItemStyleDone target:self action:@selector(popAlertAction:)];
self.navigationItem.leftBarButtonItem=backBtn;
[backBtn release];
,你的選擇是在這裏:
- (void)popAlertAction:(UIBarButtonItem*)sender
{
//Do ur stuff for pop up
}
K傢伙謝謝,這是第二種選擇,有沒有什麼辦法來檢測UINavigationController的後退按鈕動作..? –
'b'呢?請修復它。 –
@HarishSaran你是什麼意思?當您點擊警報視圖時,您是否需要返回? –
最佳和最簡單的方式
嘗試把這個到視圖控制器,你要檢測的按:
-(void) viewWillDisappear:(BOOL)animated {
if ([self.navigationController.viewControllers indexOfObject:self]==NSNotFound) {
// back button was pressed. We know this is true because self is no longer
// in the navigation stack.
}
[super viewWillDisappear:animated];
}
viewControllerCount - 是持有數量VAR以前的viewControllers在UINavigationController中。然後,我們檢查是否viewControllerCount> [viewControllers count]如果是這樣,我們知道我們會回來(即後退按鈕模仿)。
- (void)navigationController:(UINavigationController *)navigationController
willShowViewController:(UIViewController *)viewController
animated:(BOOL)animated
{
NSArray *viewControllers = [navigationController viewControllers];
if (viewControllerCount > [viewControllers count])
{
// your code
}
viewControllerCount = [viewControllers count];
}
夢幻般的@satheeshwaran,正是我想要的...... –
也是我想要的。 :-)爲了記錄,您需要在導航回到的視圖控制器上實現協議。 – doekman
這個解決方案效果很好,而且效率最高。確保與navigationController委託的連接處於 - (void)viewDidAppear:(BOOL)動畫中,否則當第一個viewcontroller第一次啓動時,alert也會出現。 –