我希望能够根据内容设置我的tableview的大小。我认为我可以在prepareForSegue中执行此操作,因为如果在我的rootViewController中按下按钮,我的tableview将显示为弹出窗口。所以我正在尝试的是设置显式大小,就像我在故事板中可以做的那样,但我想以编程方式进行。我试过了self.tableview.frame.size,但它得到一个错误,它说它不可分配?
if([[segue identifier] isEqualToString:@"tagView1"])
{
TagTableViewController *tvc = [segue destinationViewController];
tvc.tableView.frame = CGRectMake(tvc.tableView.frame.origin.x, tvc.tableView.frame.origin.y , 100, 100);
}
答案 0 :(得分:2)
在TVC的viewDidLoad
:
- (void)viewDidLoad {
[super viewDidLoad];
self.clearsSelectionOnViewWillAppear = NO;
// Change to what you need
self.contentSizeForViewInPopover = CGSizeMake(150.0, 250.0);
}
答案 1 :(得分:0)
您必须设置整个frame
。如果您希望origin
保持不变,请执行以下操作:
self.tableview.frame = CGRectMake(self.tableview.frame.origin.x, self.tableview.frame.origin.y, __width__, __height__);
答案 2 :(得分:0)
尝试在vieDidAppear中设置表的大小: 在TVC。
像:
- (void)viewDidAppear:(BOOL)动画{
[super viewDidAppear:animated];
[self.tableView setFrame:CGRectMake(self.tableView.frame.origin.x, self.tableView.frame.origin.y, self.tableView.frame.size.width, self.tableView.frame.size.height - 50)];
}
答案 3 :(得分:-1)
尝试self.tableview.frame = (CGRect){self.tableview.frame.origin, newSize};
与self.tableview.frame = CGRectMake(self.tableview.frame.origin.x, self.tableview.frame.origin.y, newSize.width, newSize.height);
相同,只是更短。
您不应该直接设置大小,因为在这种情况下不会通知观察视图框架的其他对象。