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

相关问题