1

因此,我有一個基於視圖的應用程序,其中需要一個包含tableview的頁面,並且我希望它上面的導航欄能夠返回。在實現代碼如下類我實現的viewDidLoad中通過以編程方式創建的導航欄更改autoresizingMask

-(IBAction)switchToTableView; { 

    tableView *table = [[tableView alloc] initWithNibName:@"tableView" bundle:nil]; 
    UINavigationController *navControl = [[UINavigationController alloc] initWithRootViewController: table]; 
    table.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; 
    [table release]; 
    [self presentModalViewController: navControl animated:YES]; 
    [navControl release]; 
} 

然後:我添加了這個編程

- (void)viewDidLoad 
{ 
    self.tableView.rowHeight = 70.f; 

    UIBarButtonItem *back = [[UIBarButtonItem alloc] 
          initWithTitle:@"Back" 
          style:UIBarButtonItemStyleDone 
          target:self 
          action:@selector(switchToHome)]; 
    self.navigationItem.leftBarButtonItem = back; 

    UIBarButtonItem *map = [[UIBarButtonItem alloc] 
          initWithTitle:@"Map" 
          style:UIBarButtonItemStyleDone 
          target:self 
          action:@selector(switchBacktoFindArt)]; 
    self.navigationItem.rightBarButtonItem = map; 
    [map release]; 

    [super viewDidLoad]; 
} 

添加所需的按鈕。現在,所有這些都運行良好,但現在我正在瀏覽我的應用並允許改變方向,因爲我無法更改IB中的autoresizingMask,所以我遇到了這個問題。整個tableview頁面調整得很好,除了導航欄從上到下變得非常瘦。我希望它保持相同的高度。我如何去設置合適的蒙版,甚至是否訪問IB之外的導航欄?

回答

2

我想你可以玩的東西像這樣禁用高度變化:

navControl.navigationBar.autoresizingMask ^= UIViewAutoresizingFlexibleHeight 

但一個UINavigationController可能真正得到靠不住的,如果你用它的內部就像玩耍。令我感到意外的是,導航欄還沒有調整到合適的高度,就像默認情況下那樣。 (感覺就像其他代碼中的其他東西可能是錯的,但我必須看到更多才能找到)。

+0

感謝您的反饋!它看起來像會工作,但我把這個命令放在[table release]上面的switchToTableView方法中,不幸的是它似乎沒有做任何事情。有任何想法嗎?我認爲導航欄對於大多數人來說是一個令人愉快的高度,因爲它大約是普通厚度的2/3,特別是因爲景觀中的桌面視圖使得視圖很小,但是我在mapview和這個tableview之間來回切換相同的導航欄,所以我認爲這將是很好的保持它們均勻厚實。 – Ryan 2011-05-20 20:34:37

相關問題