skå*_*fan 25 iphone cocoa-touch objective-c uinavigationcontroller ios4
尝试在向下钻取导航控制器中自定义我的后退按钮.
在我的一个视图控制器上,我有一个添加按钮,其中代码以编程方式生成一个新的UIViewController
:
- (void)add:(id)sender
{
MyAddViewController *addController = [[MyAddViewController alloc] initWithNibName:@"MyAddViewController" bundle:nil];
[self.navigationController pushViewController:addController animated:YES];
[addController release];
}
Run Code Online (Sandbox Code Playgroud)
这是有效的,当我单击添加按钮时,它会向下钻取到新视图中.在我的viewDidLoad
方法里面MyAddViewController.m
:
self.navigationItem.backBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil] autorelease];
Run Code Online (Sandbox Code Playgroud)
但这不起作用.导航控制器中的后退按钮仍然是堆栈上前一个视图控制器的标题.看来这条线什么也没做.我错过了什么?
谢谢
ben*_*ong 50
self.navigationItem.backBarButtonItem
用于视图控制器推送的视图上显示的后退按钮.因此,您需要将该行移动到上一个视图控制器.
Mat*_*ing 12
你混淆了这个backBarButtonItem
和leftBarButtonItem
.从UINavigationItem
文档上backBarButtonItem
:
当此项目是导航栏的后退项目时 - 当它是顶部项目下方的下一个项目时 - 它可以表示为导航栏上的后退按钮.使用此属性指定后退按钮.您设置的后栏按钮项目的目标和操作应为零.默认值是显示导航项标题的条形按钮项.
所以,如果你要改变:
self.navigationItem.backBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil] autorelease];
Run Code Online (Sandbox Code Playgroud)
至:
self.navigationItem.leftBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil] autorelease];
Run Code Online (Sandbox Code Playgroud)
我相信你会得到预期的效果.
你无法替换backBarButtonItem
,但你可以用它leftBarButtonItem
来覆盖它.但要使新按钮的执行操作与后退按钮相同,您需要设置新按钮的目标和操作,如:
- (void)dismissMyView {
[self.navigationController popViewControllerAnimated:YES];
}
- (void)viewDidLoad {
[super viewDidLoad];
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc]
initWithTitle:@"Quit" style: UIBarButtonItemStyleBordered
target:self action:@selector(dismissMyView)];
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
39898 次 |
最近记录: |