27

我创建了一个新的基于导航的 iPhone 应用程序。我将此添加到 RootViewController。

- (void)viewDidLoad {
    [super viewDidLoad];
    UIBarButtonItem *addButton = [[UIBarButtonItem alloc] init];
self.navigationItem.leftBarButtonItem = addButton;
self.navigationItem.leftBarButtonItem.enabled = YES;
}

但是没有左键显示。有什么我需要做的吗?

4

3 回答 3

55

您没有定义按钮的实际作用。这是我的应用程序中的一行:

self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(cancelEdit:)];

cancelEdit:,选择器,在当前类(self)中,定义为:

- (void) cancelEdit: (id) sender;
于 2009-02-19T16:07:11.200 回答
14

实际上还有另一个答案,此处未列出,但在许多情况下可能非常有用。如果您不想使用 UINavigationController,那么self.navigationItem不适合您。

UIBarButtonItem *barButton = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"imageName"] style:UIBarButtonItemStyleBordered target:self action:@selector(action:)];
UINavigationItem *navigationItem = [[UINavigationItem alloc] initWithTitle:@"Bar Title"];
navigationItem.leftBarButtonItem = barButton;
[navigationBar pushNavigationItem:navigationItem animated:NO];

在创建带有栏和按钮的轻量级 UIViewController 时,您可能希望这样做,但不希望导航开销。

于 2012-10-07T21:35:45.767 回答
11

关于这个问题:

很好,谢谢。您在哪里可以找到各种可用的选择器?该文档对此非常模糊。我定义了一个实例方法并将其作为选择器,但它从未执行过。单击按钮时,我想在详细视图中滑动。– 4thSpace 2 月 19 日 16:19

我去了需要更多信息的地方,然后按退出 (Esc) 键。所以,在这个例子中:

...(beginning of line)... @selector(Place Cursor Here, press Esc) ...

将出现可用选择器的列表。对于 Microsoft 程序员来说,这就像 Intellisense,但您必须使用 Esc 来请求它(它只是不像在 Visual Studio 中那样自动出现)。实际上,当您开始键入时,XCode 确实会创建您尝试创建的大部分内容,并且当您确定 Tab 键是您的朋友时,它确实很有帮助。(嗯……这是的朋友……我过着孤独的生活)

现在,如果您需要自己的选择器,可以将标签放在那里(例如mySelector :),然后在代码的更下方构建它:

- (IBAction)mySelector:(id)sender {
NSLog(@"You touched me THERE!");
}

另外,在头文件(.h)中,一定要放一个对应的:

-(IBAction) mySelector:(id)sender;

于 2009-09-06T04:03:13.920 回答