在我的应用程序中,我在UINavigationItem的右侧添加了两个按钮,它在模拟器上工作正常,但是当我在设备上测试它时,它给出了 SIGABRT 的错误,以及{{1} }。我尝试在右侧添加一个按钮,它已成功添加,并且在设备上也能正常工作。我的问题是,问题是什么?
我正在使用以下代码添加正确的按钮
unrecognized selector sent to NSArray
请指出我做错了什么? 谢谢!
答案 0 :(得分:0)
尝试将这些按钮添加到UIBarButtonItem并将UIBarButtonItem添加到myNavItem,如myNavItem.rightBarButtonItem = barButtonItem;
答案 1 :(得分:0)
你的第一行
NSArray *buttons=[[NSArray alloc] initWithObjects:btnOne,btnTwo,nil]];
最后有一个额外的右括号。不确定这是否会导致该错误,但它应该会导致一些错误。
答案 2 :(得分:0)
您可以使用UISegmentedControl。检查UICatalog代码示例以在导航栏中检查其用法。
UISegmentedControl *segmentedControl = [[UISegmentedControl alloc]initWithItems:[NSArray arrayWithObjects:btn1,btn2,nil]];
[segmentedControl addTarget:self action:@selector(segmentAction:) forControlEvents:UIControlEventValueChanged];
segmentedControl.frame = CGRectMake(0, 0, 90, 35);
segmentedControl.segmentedControlStyle=UISegmentedControlStyleBar;
segmentedControl.momentary = YES;
UIBarButtonItem *segmentBarItem = [[UIBarButtonItem alloc] initWithCustomView:segmentedControl];
[segmentedControl release];
self.navigationItem.rightBarButtonItem = segmentBarItem;
[segmentBarItem release];
}
这是在你的酒吧中添加尽可能多的按钮的最佳方式。希望它会帮助你。 谢谢:))
答案 3 :(得分:0)
myNavItem
似乎不是UINavigationItem
的实例,而是NSArray
的实例(不支持setRightBarButtonItems
)。你能否向我们展示更多有关myNavItem
的内容?
我怀疑myNavItem没有正确保留它最初指向的导航项。并且它现在巧合地指向NSArray。如果所有对象都无限期保留以便更好地记录,则在调试设置中可能不会发生此错误。
如果此代码从视图控制器的实例运行,请尝试使用此行:
self.navigationItem.rightBarButtonItems = buttons;
在版本5之前的iOS上:如果您收到unrecognized selector sent to NSArray
个日志,那么您的内存管理就会出现问题。该日志应在iOS 5之前的iOS上阅读unrecognized selector sent to UINavigationItem
。
修复内存问题后,您应该使用UIBarButtonItem
一个包含两个UIButtons
的自定义视图。