我正在开展一个项目,我正在尝试以编程方式做到最多。
我要将UIBarButtonItem添加到在App Delegate中创建的NavigationController的导航栏。
WPViewController *mainVC = [[WPViewController alloc] initWithNibName:@"WPViewController_iPhone" bundle:nil];
UINavigationController *navCon = [[UINavigationController alloc] init];
[navCon pushViewController:mainVC animated:NO];
[self.window addSubview:navCon.view];
然后在这里声明为WPViewController
的实现文件中,我创建并添加barbuttonitem作为VC的导航项:
UIBarButtonItem *rBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAction target:self action:@selector(test)];
self.navigationItem.rightBarButtonItem = rBarButtonItem;
在此之前有一个名为test的方法,只需记录“test”,但当我点击该按钮时,应用程序崩溃。
请帮助我,这个错误让我发疯。
注意:
答案 0 :(得分:0)
在调试器中设置NSZombieEnabled,MallocStackLogging和guard malloc。然后,当您的应用程序崩溃时,在控制台中输入:
(gdb)info malloc-history //崩溃对象的地址,即0x543216 //
答案 1 :(得分:0)
使用addSubview
时我也遇到了这个问题,但是创建一个(nonatomic, strong)
强的属性为我解决了这个问题。
答案 2 :(得分:-1)
Button尝试将自身作为参数传递给测试方法。我猜你的方法的签名不包括参数,因为你的选择器中没有冒号(它应该是@selector(test:)
)。方法实现应如下所示:
- (void) test:(id)sender