通过以编程方式创建的导航栏更改autoresizingMask
问题描述:
因此,我有一个基于视图的应用程序,其中需要一个包含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之外的导航栏?
答
我想你可以玩的东西像这样禁用高度变化:
navControl.navigationBar.autoresizingMask ^= UIViewAutoresizingFlexibleHeight
但一个UINavigationController可能真正得到靠不住的,如果你用它的内部就像玩耍。令我感到意外的是,导航栏还没有调整到合适的高度,就像默认情况下那样。 (感觉就像其他代码中的其他东西可能是错的,但我必须看到更多才能找到)。
感谢您的反馈!它看起来像会工作,但我把这个命令放在[table release]上面的switchToTableView方法中,不幸的是它似乎没有做任何事情。有任何想法吗?我认为导航栏对于大多数人来说是一个令人愉快的高度,因为它大约是普通厚度的2/3,特别是因为景观中的桌面视图使得视图很小,但是我在mapview和这个tableview之间来回切换相同的导航栏,所以我认为这将是很好的保持它们均匀厚实。 – Ryan 2011-05-20 20:34:37