我在xib文件中有一个UIBarButtonItem
项。我可以在xib文件中将其标识符设置为播放,暂停,页面卷曲等。现在,我该如何以编程方式进行此操作?
答案 0 :(得分:7)
这应该有用(在viewDidLoad中)
UIBarButtonItem *barButtonItem = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:systemItem target:tar action:act] autorelease];
self.navigationItem.rightBarButton = barButtonItem;
其中systemItem是您要使用的UIBarButtonSystemItem
类型。完整的选项列表here
答案 1 :(得分:1)
如果我理解你,你想用你的按钮在不同的系统图像之间切换?我只是在Edit
和Done
之间切换了类似的案例。即使这些是文本标签,情况也几乎相同。
我设法做到这一点的唯一方法是以上述wattson12描述的方式在UIBarButtonItem
中创建两个单独的viewDidLoad
个实例,并在需要时将正确的一个分配给self.navigation.leftBarButton
。
答案 2 :(得分:0)
我有同样的问题,我已经阅读了wattson12的答案,然后我解决了另一种类似的方式。我不知道哪个更有效。
//play button
@IBAction func startIt(sender:AnyObject){
startThrough();
};
//播放按钮
func startThrough(){ timer = NSTimer.scheduledTimerWithTimeInterval(1,target:self,selector:Selector(“updateTime”),userInfo:nil,repeats:true);
let pauseButton = UIBarButtonItem(barButtonSystemItem: .Pause, target: self, action: "pauseIt");
self.toolBarIt.items?.removeLast();
self.toolBarIt.items?.append( pauseButton );
}
func pauseIt(){
timer.invalidate();
let play = UIBarButtonItem(barButtonSystemItem: .Play, target: self, action: "startThrough");
self.toolBarIt.items?.removeLast();
self.toolBarIt.items?.append( play );
}
答案 3 :(得分:-3)
如果您在IB中将标识符设置为“自定义”,则至少可以更改标题:
-(IBAction)editList:(UIBarButtonItem *)sender {
edit=!edit;
[imageListTable setEditing:edit animated:NO];
if(edit){
[sender setStyle:UIBarButtonItemStyleDone];
[sender setTitle:@"Done"];
}else{
[sender setStyle:UIBarButtonItemStyleBordered];
[sender setTitle:@"Edit"];
}
}