我有UItable项目。我有导航栏等。在表“类别”中的一个项目上,我发誓另一个UITable:
CategoryTableViewController *b = [[CategoryTableViewController alloc]init];
[self.navigationController pushViewController:b animated:YES];
[b release];
现在我想在导航栏中添加“ADD”按钮,我在* .xib中添加UINavigationBarItem将它连接到outlet并在viewDidLoad中添加如下:
self.navigationItem.rightBarButtonItem = self.addButton;
这不起作用(addButton为null),但是当我在第一个UITable中添加相同的代码添加按钮时,它工作正常,并添加了“ADD”按钮。
这可能是什么问题?
答案 0 :(得分:2)
在ViewController中应该在导航栏中显示按钮,在viewDidLoad()方法中输入:
self.addToolbarButton = [[[UIBarButtonItem alloc]
initWithTitle:@"Add", nil)
style:UIBarButtonSystemItemAdd
target:self
action:@selector (add)] autorelease];
self.navigationItem.leftBarButtonItem = addToolbarButton;
这将在导航栏左侧添加一个“添加”样式按钮,调用选择器方法:
-(void) add {...}
点击时在同一个班级中。在同一类中的此方法中,您可以指定添加逻辑。如果此方法应放在不同的类中,请将目标设置为该值。
这是解决这个问题的方法。方法“ - (void)add”是你的Outlet在.xib方法中的用法。
对于.xib方法,您应该验证navigationBarButton的Outlet属性是否设置为retain。
答案 1 :(得分:1)
self.addButton为NULL,因此请确保其不为NULL。从代码创建一个按钮。
UIBarButtonItem *button = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(doneMeasuring:)];
答案 2 :(得分:0)
是[super viewDidLoad];
viewDidLoad方法中的第一个调用?
如果没有尝试将它放在viewDidLoad的最开头。