7

我正在研究由 3 个元素组成的 iPhone 视图,即 UITextView、UIToolBar 和 UIBarButtonItem。

目标是,我希望 UIBarButtonItem 将其样式从“编辑”(UIBarButtonSystemItemEdit)更改为“完成”(UIBarButtonSystemItemDone)并将新选择器更新为新方法。

首先,我尝试了以下代码,但它不起作用:

你能帮我解决这个想法吗?

4

4 回答 4

15

有一个具有此行为的内置栏按钮,您可以通过editButtonItemUIViewContoller 的属性获得它。选择该按钮会将其来自的视图控制器更改为编辑模式,并将按钮切换为完成按钮。

- (void)viewDidLoad {
  [super viewDidLoad];
  self.navigationItem.rightBarButtonItem = self.editButtonItem;
}
于 2009-10-30T07:28:35.830 回答
5

如果您已通过 IB 添加了按钮,请确保将标识符设置为 Custom 并在 .h 中分配一个按钮,并使用适当的 IBOutlet 和 Property Synthesize .m 中的按钮

然后在您的代码中执行以下操作:

// Set to done
editButton.style = UIBarButtonItemStyleDone;
editButton.title = @"Done";

// Set back to edit
editButton.style = UIBarButtonItemStyleBordered;
editButton.title = @"Edit";
于 2011-02-10T03:26:31.980 回答
4

更改按钮完成按钮使用这个

[self.navigationItem.rightBarButtonItem setStyle:UIBarButtonItemStyleDone];

将按钮更改为编辑按钮使用此

[self.navigationItem.rightBarButtonItem setStyle:UIBarButtonItemStyleBordered];
于 2010-09-03T12:05:22.773 回答
2

我最终做了这样的事情。不幸的是,直接设置标题不起作用,由于某种原因它是 nil 并且不允许我将它设置为不同的值。self.editButton 来自带有目标和操作集的 IBOutlet。此代码使用 ARC。我希望这可以帮助别人。

        NSString *title = app.settings.editing 
                        ? NSLocalizedString(@"Done", @"")
                        : NSLocalizedString(@"Edit", @"");

        UIBarButtonItemStyle style  = app.settings.editing 
                                    ? UIBarButtonItemStyleDone
                                    : UIBarButtonItemStyleBordered;

        UIBarButtonItem *editButton 
            = [[UIBarButtonItem alloc] initWithTitle:title 
                                               style:style 
                                              target:self.editButton.target 
                                              action:self.editButton.action];

        self.navigationItem.rightBarButtonItem = editButton;
于 2012-04-06T03:08:15.037 回答