在UINavigationController中设置框架viewcontrollers视图

时间:2013-08-27 12:14:58

标签: ios objective-c uiviewcontroller uinavigationcontroller uitableview

我正在尝试更改VC的框架不起作用。这是我的代码:

AZControlViewController *vc = [[AZControlViewController alloc] init];
vc.tableView.frame = CGRectMake(0, 195, 320, 500);
self.vcMaster = [[[UINavigationController alloc] initWithRootViewController:vc] autorelease];

AZControlViewControllerisUITableViewController

任何人都可以帮助我吗?

谢谢!

3 个答案:

答案 0 :(得分:1)

使用断点或NSLog查看tableView vc的{​​{1}}属性。它应该是nil。发生这种情况是因为视图控制器的视图组件仅在显示视图控制器后才会启动。

要在AZControlViewController.m内正确更改tableView的框架,请执行上述方法并根据需要更改框架。

-(void)viewDidLayoutSubviews
{
    [super viewDidLayoutSubviews];
    self.tableView.frame = CGRectMake(0, 195, 320, 500);
}

如果您仍想从外部类设置此帧,请创建一个属性以存储所需的帧,然后将此帧指定给tableView的帧。

AZControlViewController.h

@property (nonatomic, assign) CGRect tableViewFrame;

AZControlViewController.m

-(void)viewDidLayoutSubviews
{
    [super viewDidLayoutSubviews];
    self.tableView.frame = self.tableViewFrame;
}

以及其他地方:

AZControlViewController *vc = [[AZControlViewController alloc] init];
vc.tableViewFrame = CGRectMake(0, 195, 320, 500);

答案 1 :(得分:0)

不要为此目的而继承UITAbleViewController。让UIContainterView位于(0,195,320,500)和常规UITableViewController(或AZControlViewController分别位于AZControlViewController的那些部分会更好控制内部的talbe视图。它的表格视图的框架是(0,0,320,500)。

答案 2 :(得分:0)

确定。 jmgarben ..你应该在下一个视图控制器的viewWillAppear或viewDidLoad中定义框架。它会工作。

如果你仍有疑虑......你可以问。