我创建了一个新的基于导航的iPhone应用程序。我将它添加到RootViewController。
- (void)viewDidLoad {
[super viewDidLoad];
UIBarButtonItem *addButton = [[UIBarButtonItem alloc] init];
self.navigationItem.leftBarButtonItem = addButton;
self.navigationItem.leftBarButtonItem.enabled = YES;
}
但是没有显示左按钮。有什么我需要做的吗?
答案 0 :(得分:54)
您没有定义按钮实际执行的操作。这是我的应用程序中的一行:
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(cancelEdit:)];
cancelEdit:
,选择器,在当前类(self)中,定义为:
- (void) cancelEdit: (id) sender;
答案 1 :(得分:14)
实际上还有另一个答案,这里没有列出,但在许多情况下可能非常有用。
如果您do not want to use 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时,您可能需要这样做,但不希望导航开销。
答案 2 :(得分: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;