以编程方式将leftBarButtonItem添加到应用程序

时间:2013-01-28 18:29:20

标签: objective-c uinavigationcontroller uitableview uibarbuttonitem appdelegate

我正在尝试将leftBarButtonItem添加到我的iPhone应用中。我有导航控制器,里面有TableViewController。 我在AppDelegate.m文件中编写以下行。

self.viewCon = [[UITableViewController alloc]init];
    self.navCon = [[UINavigationController alloc]initWithRootViewController:self.viewCon];


  self.viewCon.navigationItem.leftBarButtonItem = [[[UIBarButtonItem alloc] 
initWithTitle:@"Second View"  style:UIBarButtonItemStyleBordered target:self action:@selector(push)]autorelease];

导航项目未出现在屏幕上。桌子已开启。可能是什么问题? 顺便说一句,没有ARC或故事板。

3 个答案:

答案 0 :(得分:3)

我假设你想要一个带有NavigationController的TableView,在这种情况下你的根视图控制器将是你的导航控制器,而不是你的tableview。如果你在IB中正确构建应用程序(因为我看不到你做了什么而在黑暗中刺伤),那么你不应该初始化你的导航控制器。如果是这种情况,那么它应该像

一样简单
self.viewCon.navigationItem.leftBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:@"Second View"  style:UIBarButtonItemStyleBordered target:self action:@selector(push)]autorelease];

我认为您正在使用程序化初始化覆盖当前设置的NavController,这会导致所有内容消失。

如果出现这种情况并且您可能已经尝试过此操作,请回复错误以及IB设置的屏幕截图。

答案 1 :(得分:0)

请改为尝试:

UIBarButtonItem *bbi = [[[UIBarButtonItem alloc] initWithTitle:@"Second View" style:UIBarButtonItemStyleBordered target:self action:@selector(push)]autorelease];
[self.navigationItem setLeftBarButtonItem:bbi];

答案 2 :(得分:-1)

[self.navigationController setNavigationBarHidden:NO];
UIButton *backButton = [UIButton buttonWithType:UIButtonTypeCustom];
[backButton setFrame:CGRectMake(0, 0, 49,32)];
        [ backButton setBackgroundImage:[UIImage imageNamed:@"image.png"] forState:UIControlStateNormal];
        [backButton addTarget:self action:@selector(back) forControlEvents:UIControlEventTouchUpInside];
        UIBarButtonItem *back = [[UIBarButtonItem alloc]initWithCustomView:backButton];
        self.navigationItem.leftBarButtonItem = back;
        [back release];