2011-02-04 49 views
0

大家好 我寫這封信的viewDidLoad一個簡單的代碼,類的UITableViewController的孩子一樣之下,但按鈕是不可見的,而標題是可見的,當UIBarButtonItem在UINavigationBar中不可見時該怎麼辦?

,我點擊一個按鈕的另一件事在viewDidLoad方法ViewController.m,這是調用方法,該方法的代碼如下

//Code of button target method 

-(void)statusMethod { 
    NSLog(@"statusMethod"); 
    Status *ob=[[Status alloc]init]; 
    [self presentModalViewController:ob animated:YES]; 

} 

//Code of ViewDidLoad of Status.m 
UINavigationBar *navBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 0, width, 43)]; 
    navBar.autoresizingMask = UIViewAutoresizingFlexibleWidth; 
    [self.view addSubview:navBar]; 
    [navBar release]; 

UIBarButtonItem *home = [[UIBarButtonItem alloc] initWithTitle:@"HOME" style:UIBarButtonItemStylePlain target:self action:@selector(homeMethod)]; 
self.navigationItem.rightBarButtonItem = home; 

UIBarButtonItem *add = [[UIBarButtonItem alloc] initWithTitle:@"Add" style:UIBarButtonSystemItemAdd target:self action:@selector(addMethod)]; 
self.navigationItem.leftBarButtonItem = add; 


UILabel *label = [[UILabel alloc] initWithFrame: 
        CGRectMake(10,10,width-20,25)]; 
label.autoresizingMask = UIViewAutoresizingFlexibleWidth; 
label.text = @"Status"; 
label.backgroundColor = [UIColor clearColor]; 
label.font = [UIFont systemFontOfSize:25]; 
label.textAlignment = UITextAlignmentCenter; 
[navBar addSubview:label]; 
[label release]; 

任何想法,什麼是代碼問題? 我你不明白,那麼在哪裏再問我, 我要讚美,如果我會得到我的問題

+0

您是使用導航控制器推送此視圖還是以模態視圖呈現? – benwong 2011-02-04 12:42:43

回答

4

的解決方案。它好像self.navigationItem僅由UINavigationController的看着(控制器,不是吧)。酒吧本身不會檢查。

所以您應該

1)使用其本身自帶的導航欄一個真正的UINavigationController,並將處理navigationItems你。上面的self.navigationItem代碼將在這種情況下工作。 (你應該考慮self.navigationItem.title = @"Status";

如果你的UITableViewController將要推動東西上下導航堆棧,這是你應該採取的任何情況下的路徑。

2)使用UINavigationBar自己的導航項。但它似乎並沒有拿出一個導航項目,所以你必須添加自己:

UINavigationItem *navItem = [[UINavigationItem alloc] initWithTitle:@"Status"]; 

[navBar setItems:[NSArray arrayWithObject:navItem]]; 
[navItem release]; 

,然後設置左,右按鍵爲

[navBar topItem].leftBarButtonItem = add; 
[add release]; 

[navBar topItem].rightBarButtonItem = home; 
[home release]; 

用的UINavigationController/UINavigationBar的處理/ UINavigationItem可能會令人困惑,但幸運的是,蘋果公司對其所有UINavigationController documentation頂部的所有這些事情如何協同工作有一個很好的解釋。

相關問題