以编程方式设置UIBarButtonItem的标识符

时间:2012-01-24 15:12:06

标签: iphone ios uibarbuttonitem identifier

我在xib文件中有一个UIBarButtonItem项。我可以在xib文件中将其标识符设置为播放,暂停,页面卷曲等。现在,我该如何以编程方式进行此操作?

4 个答案:

答案 0 :(得分:7)

这应该有用(在viewDidLoad中)

UIBarButtonItem *barButtonItem = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:systemItem target:tar action:act] autorelease];
self.navigationItem.rightBarButton = barButtonItem;

其中systemItem是您要使用的UIBarButtonSystemItem类型。完整的选项列表here

答案 1 :(得分:1)

如果我理解你,你想用你的按钮在不同的系统图像之间切换?我只是在EditDone之间切换了类似的案例。即使这些是文本标签,情况也几乎相同。

我设法做到这一点的唯一方法是以上述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"];
    }
 }