iPhone开发:UIBarButtonItem或标题未显示在NavigationBar中

时间:2010-12-25 21:28:50

标签: iphone objective-c uinavigationbar

这是我的问题。我的顶部有一个NavigationBar,底部有一个TabBar,屏幕中央有一个TableView。非常正常的情况。我在IB中设置了所有内容,并在app delegate中设置了它:

ExpensesListNavController * expensesListNavController;

这是为了能够向堆栈添加新视图。我需要有3个级别: - TableView中的项目列表 - >好 - firstLevel:一旦按下一个单元格,视图就会被添加到堆栈中 - >好 - 第二级:在第一级按下导航栏上的“修改”按钮我希望显示一个可由用户自定义的新视图。

尝试在“firstLevelView”中添加“修改”按钮时,我的问题就出现了。在我的代码

下面
-(IBAction) modify:(id)sender
{
 if (editableDetailViewController == nil) 
 {
  editableDetailViewController = [[editableDetailViewController alloc] init];
 }
 editableDetailViewController.expense = expense;

 [appDelegate.expensesListNavController pushViewController:editableDetailViewController animated:YES];
 editableDetailViewController = nil;
}


// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
 [super viewDidLoad];

 appDelegate = [[UIApplication sharedApplication] delegate];
 UIBarButtonItem *modifyButton = [[UIBarButtonItem alloc] initWithTitle:@"Modify" style:UIBarButtonItemStylePlain target:self action:@selector(modify:)];
 appDelegate.expensesListNavController.navigationItem.rightBarButtonItem = modifyButton;
 appDelegate.expensesListNavController.navigationItem.title = @"Titoloooo";
 NSLog(@"NavBar button has just been set !!");
 [modifyButton release];

没有显示任何内容,既没有标题也没有按钮。你知道发生了什么吗?我实在想不出来!!!

非常感谢,AM

1 个答案:

答案 0 :(得分:0)

好吧 - 我远不是这里的专家 - 但你展示的代码来自你的“firstLevel”课程?或者您提前实例化您的类并手动切换视图?

在Interface Builder中,设置MainWindow(在项目设置时自动生成) 好吧,我准备了我的Interface BUilder设置的截图。似乎我缺少能够发布它的声誉。

基本上,您将向MainWindow.xib添加导航控制器

  • ,添加导航栏。
  • 将根视图控制器移动到导航控制器下。
  • 将UINavigationItem添加到根视图控制器
  • 将UIBarButtonItem添加到UINavigationItem
  • 将UIBarButtonItem的出口连接到您的IBAction

    在相应的viewcontroller类中,您将需要“修改”方法。

    // Implement viewDidLoad to do additional setup after loading the view, typically from a nib. 
    -(IBAction)modify:(id)sender {
        controller = [[firstLevel alloc] initWithNibName:@"secondLevel" bundle:nil];
        [self.navigationController pushViewController:controller animated:YES];
        [controller release];
    }