1

我试图改变 VC 的框架不起作用。这是我的代码:

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

AZControlViewControlleris是一个UITableViewController

谁能帮我?

谢谢!

4

3 回答 3

1

使用断点或 NSLog查看tableView. vc应该是nil。发生这种情况是因为视图控制器的视图组件只有在视图控制器出现后才会被初始化。

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

-(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);
于 2013-08-27T13:02:18.640 回答
0

不要UITAbleViewController为此目的进行子类化。UIContainterView在 (0, 195, 320, 500) 和一个常规的UITableViewController(或AZControlViewController,分别AZControlViewController控制 talbe 视图的部分)内有一个位置会更好。它的表格视图的框架将是 (0,0,320,500)。

于 2013-08-27T12:22:14.547 回答
0

好的。jmgarben .. 您应该在下一个视图控制器的 viewWillAppear 或 viewDidLoad 中定义框架。它将起作用。

如果你还有疑问..你可以问。

于 2013-08-27T12:27:43.537 回答