为啥我必须在实现自定义左 barButtonItem 之前隐藏后退按钮项?
Posted
技术标签:
【中文标题】为啥我必须在实现自定义左 barButtonItem 之前隐藏后退按钮项?【英文标题】:Why do I have to hide back button item before implementing custom left barButtonItem?为什么我必须在实现自定义左 barButtonItem 之前隐藏后退按钮项? 【发布时间】:2013-12-31 05:03:53 【问题描述】:这是我删除导航栏背面 UIBarButtonItem 并将其替换为取消按钮的代码:
UIBarButtonItem *cancelButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Cancel" style:UIBarButtonItemStylePlain target:nil action:nil];
self.navigationItem.hidesBackButton = YES;
self.navigationItem.leftBarButtonItem = cancelButtonItem;
我在网上看到的每个示例都不会在将 backButton 替换为自定义项之前隐藏它。我可能错了,但这似乎是一行不需要的代码。
【问题讨论】:
【参考方案1】:您是否尝试过以UIBarButtonItem
的风格使用UIBarButtonSystemItemCancel
而不是UIBarButtonItemStylePlain
?
试试这个,
UIBarButtonItem* cancelButton = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(cancelAction)];
self.navigationItem.leftBarButtonItem = cancelButton;
此外,如果您在parentViewController
中使用了self.navigationItem.backBarButtonItem
,如果您在childViewController 中的自定义leftBarButton 未正确添加,它将默认在childViewController 的leftBarButtonItem 中显示该按钮。
【讨论】:
【参考方案2】:试试这个。 在您的应用程序代表完成启动时写下这个。
LoginViewController *loginVc = [[LoginViewController alloc] initWithNibName:@"LoginViewController" bundle:nil];
self.navigationController = [[UINavigationController alloc] initWithRootViewController:loginVc];
self.window.rootViewController = self.navigationController;
self.navigationController.navigationBarHidden =YES;
// and use uibutton in your view controller at place of back button or cancel button
// and u can push or pop your view from there.
【讨论】:
以上是关于为啥我必须在实现自定义左 barButtonItem 之前隐藏后退按钮项?的主要内容,如果未能解决你的问题,请参考以下文章