我有UINavigationController
,我必須保持默認後退按鈕「後退箭頭樣式」我只是想問,如果我可以更改後退按鈕動作,而不建立新的和改變其風格如何更改uinavigation控制器後退按鈕動作
回答
AFAIK你不能改變默認的後退按鈕的作用本身,但您可以將UIBarButtonItem放置爲leftBarButtonItem並指定您自己的操作。
如果有一個leftBarButtonItem被定義,那麼會顯示它,而不是默認的後退按鈕。
但是,當做這樣的技巧時,請記住GUI準則。
是的,同意蘋果的HIG,改變一個標準的UI元素的行動可能會從AppStore被拒絕的應用程序! – rdurand
是的。除非該動作只是增加了一些功能,probaby甚至對用戶不可見,並且不會改變該應用的一般行爲。沒有必要在該按鈕或底層視圖控制器的名稱中有「BACK」。這只是建議。但它應該從導航的角度回到那裏。 –
@OmarFreewan,如果你真的只需要添加一些功能,那麼考慮使用相應視圖控制器的viewWillDisappear或viewWillAppear(或相應的DID方法)。但是,它們可能並不符合您的需求,因爲當視圖出現或消失時,它們總是被稱爲。 –
號如果你想自定義後退按鈕,你必須創建一個自定義的UIBarButtonItem,然後將其分配給相應的屬性:
self.navigationItem.backBarButtonItem = myCustomBackItem;
UINavigationBar中的後退按鈕會在您推送新的UIView時自動生成。爲了讓您自定義後退按鈕,可以使用自定義視圖創建新的UIToolBar + UIBarButtonItem。
以下代碼是在UIToolBar中使用自定義UIBarButtonItem的示例。
// create button
UIButton* backButton = [UIButton buttonWithType:101]; // left-pointing shape!
[backButton addTarget:self action:@selector(backAction) forControlEvents:UIControlEventTouchUpInside];
[backButton setTitle:@"Back" forState:UIControlStateNormal];
// create button item -- possible because UIButton subclasses UIView!
UIBarButtonItem* backItem = [[UIBarButtonItem alloc] initWithCustomView:backButton];
// add to toolbar, or to a navbar (you should only have one of these!)
[toolbar setItems:[NSArray arrayWithObject:backItem]];
navItem.leftBarButtonItem = backItem;
下面的鏈接是PSD格式的iOS按鈕的設計作進一步修改。
您可以自定義按鈕,可以使在其上行動,但你不能改變默認的返回按鈕動作.....
self.navigationItem.leftBarButtonItem = getBackBtn;
的UINavigationController的將消息發送給它的委託時,它推送並彈出一個ViewController。
你可以找到當返回按鈕被通過實施以下並在.h文件中添加<UINavigationControllerDelegate>
按下
-(void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
self.navigationController.delegate = self;
}
-(void)viewDidDisappear:(BOOL)animated{
[super viewDidDisappear:animated];
self.navigationController.delegate = nil;
}
-(void)navigationController:(UINavigationController *)navigationController
willShowViewController:(UIViewController *)viewController
animated:(BOOL)animated{
//Test here if the View Controller being shown next is right below the current
// ViewController in the navigation stack
//
//Test by:
// 1. comparing classes, or
// 2. checking for a unique tag that you previously assigned, or
// 3. comparing against the [navigationController viewControllers][n-2]
// where n is the number of items in the array
if ([viewController isKindOfClass:NSClassFromString(@"ViewControllerClassThatGetsPushedOnBACK")){
//back button has been pressed
}
if (viewController.tag == myUniqueTagIdentifier){
//back button has been pressed
}
if ([navigationController.viewControllers[navigationController.viewControllers.count-2]==viewController]){
//back button has been pressed
}
}
Apple Docs UINavigationController Class Reference:
根視圖控制器是在索引0中陣列,後視圖 控制器位於索引n-2,頂層控制器位於索引n-1, ,其中n是陣列中的項目數。
@Jesse_Gumpo你怎麼知道你會倒退?在我的所有測試中,提供的viewController是要呈現的視圖控制器,其他常見的地方(topViewController,visibleViewController)都已經顯示了viewController顯示的相同的東西。當用戶備份時,我試圖做一些特定的事情,而不是當他們進入這個視圖控制器時,所以知道「方向」是至關重要的。有一個隱藏的_disappearingViewController,我敢打賭,我有需要,但它不是一個官方的API .... – tobinjim
@tobinjim answer updated –
- 1. UINavigation後退按鈕
- 2. UINavigation Views的後退按鈕動作?
- 3. UINavigation控制器 - 後退按鈕彈出到一定的UIViewController
- 4. 如何使標題標籤適合UInavigation控制器的後退按鈕:XCode
- 5. 如何更改後退按鈕上的彈出視圖控制器動畫?
- 6. iOS >> UINavigation項後退按鈕標題不會更改
- 7. 如何給圖像進行控制控制器後退按鈕
- 8. 如何控制硬件後退按鈕
- 9. UINavigation bar的自定義後退按鈕
- 10. ios 7中的UINavigation bar後退按鈕
- 11. UINavigation bar後退按鈕沒有響應
- 12. iPhone導航控制器後退按鈕?
- 13. 導航控制器後退按鈕
- 14. 多導航控制器後退按鈕
- 15. 如何從子視圖控制器中更改後退按鈕文本?
- 16. 更改UIBarButtonItem後退按鈕
- 17. Android:更改後退按鈕的操作
- 18. 默認後退按鈕不會出現在uinavigation控件中
- 19. 當我按下後退按鈕時,如何控制導航控制器
- 20. navigationcontroller後退按鈕動作
- 21. 如何在導航控制器中按下後退按鈕時刪除動畫?
- 22. 如何控制活動流程 - 後退按鈕與Home鍵
- 23. 如何控制「後退按鈕隊列」上的活動
- 24. iPhone:如何覆蓋導航控制器中的後退按鈕?
- 25. 更改html後jQuery AJAX後退按鈕
- 26. 導航控制器的後退按鈕不起作用!
- 27. 後退按鈕不起作用的導航控制器
- 28. 如何更改按鈕控制位置?
- 29. iOS禁用導航控制器後退按鈕的動畫
- 30. 導航控制器中的後退按鈕動畫
我不明白,你想改變它的風格,還是它的動作? – rdurand
我只想改變行動 –
新動作是什麼?因爲如果您只想跳過視圖堆棧中的視圖(例如),則不需要新的按鈕。 – rdurand