将BarButtonItem添加到NavigationBar

时间:2011-09-22 06:26:51

标签: iphone ios xcode uibarbuttonitem uinavigationitem

我通过IB添加了一个NavigationBar,我尝试以编程方式添加BarButtonItem .....但它不起作用。

- (void)viewDidLoad { 

    UIBarButtonItem *addButton = [[UIBarButtonItem alloc] initWithTitle:@"Edit"style:UIBarButtonItemStyleBordered target:self action:@selector(EditTable:)];
    [self.navigationItem setLeftBarButtonItem:self.addButton];
    [super viewDidLoad];
}

5 个答案:

答案 0 :(得分:4)

尝试这样做:

self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:self action:@selector(backButtonTapped:)];

答案 1 :(得分:1)

在你的情况下试试这个:

UIBarButtonItem *addButton = [[UIBarButtonItem alloc] initWithTitle:@"Edit"style:UIBarButtonItemStyleBordered target:self action:@selector(EditTable:)];
[self.navigationItem setLeftBarButtonItem:addButton];

我想这可能有用。

答案 2 :(得分:1)

您正在做的是对的,但到目前为止,您只是将addButton作为leftBarButtonItem添加到UINavigationItem中。要将它添加到navigationBar,您需要将navigationItem推送到它,类似于将新的UIViewController添加到UINavigationController的方式。假设您为UINavigationBar navBar命名:

UINavigationItem *navigationItem = [[UINavigationItem alloc] init];

self.addButton = [[UIBarButtonItem alloc] initWithTitle:@"Edit"style:UIBarButtonItemStyleBordered target:self action:@selector(EditTable:)];
[navigationItem setLeftBarButtonItem:self.addButton];

[self.navBar pushNavigationItem:navigationItem animated:NO];
[navigationItem release];

希望有所帮助!

答案 3 :(得分:0)

UIBarButtonItem *addButton = [[UIBarButtonItem alloc] init]; 
self.navigationItem.leftBarButtonItem =  [[UIBarButtonItem alloc] initWithTitle:@"Edit"style:UIBarButtonItemStyleBordered target:self action:@selector(EditTable:)];
self.navigationItem.leftBarButtonItem = addButton;
self.navigationItem.leftBarButtonItem.enabled = YES;

答案 4 :(得分:0)

对于某些视图,leftBarButtonItem不起作用,您需要使用backBarButtonItem。试试这个:

- (void)viewDidLoad { 
    [self.navigationItem setBackBarButtonItem:[[[UIBarButtonItem alloc] initWithTitle:@"Edit" style:UIBarButtonItemStyleBordered target:self action:@selector(EditTable:)] autorelease];
    // Or, if that doesnt work for some reason use:
    // [self.navigationItem setLeftBarButtonItem:[[[UIBarButtonItem alloc] initWithTitle:@"Edit" style:UIBarButtonItemStyleBordered target:self action:@selector(EditTable:)] autorelease];
    [super viewDidLoad];
}

此外,您在viewDidLoad范围内创建了一个名为addButton的变量,但之后您尝试将属性self.addButton设置为leftBarButtonItem

self.中删除self.addButton

[self.navigationItem setLeftBarButtonItem:self.addButton]; 

或初始化属性,而不是创建具有相同名称的新项目:

self.addButton = [[UIBarButtonItem alloc] initWithTitle:@"Edit"style:UIBarButtonItemStyleBordered target:self action:@selector(EditTable:)];
// instead of:
// UIBarButtonItem *addButton = [[UIBarButtonItem alloc] initWithTitle:@"Edit"style:UIBarButtonItemStyleBordered target:self action:@selector(EditTable:)];