在编程创建的导航栏上更改autoresizingMask

时间:2011-05-20 20:05:05

标签: objective-c orientation uinavigationbar autoresizingmask

所以我有一个基于视图的应用程序,我需要一个带有tableview的页面,我想在它上面的导航栏返回。我以编程方式添加了这个:

-(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];
}

然后在我实现的tableview类的viewDidLoad中:

- (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外的导航栏?

1 个答案:

答案 0 :(得分:2)

我想你可以玩这样的东西来禁用高度变化:

navControl.navigationBar.autoresizingMask ^= UIViewAutoresizingFlexibleHeight

但是如果你玩这样的内部结构,那么UINavigationController可能会变得很糟糕。令我感到惊讶的是,导航栏还没有调整到适当的高度,就像默认情况下那样。 (感觉在代码中的其他地方可能出现其他问题,但我必须看到更多内容才能找到。)