故事板:http://s7.directupload.net/images/140717/z5hwmezv.png
嘿伙计们, 我有一个应用程序递归触发一个相同的tableview控制器(假设其中有文件和文件夹),直到你触发文件而不是文件夹。单击文件时,它会跳转到GLKit View Controller。现在我想以编程方式调整tableView的大小,这不起作用。我已经得到了窗口大小,我将用它来计算tableView的位置和大小:
CGFloat screenWidth = screenRect.size.width;
CGFloat screenHeight = screenRect.size.height;
我尝试了不同的方法来改变大小,如下所示,不会改变任何东西。
mainTableView.frame = CGRectMake(0, 0, screenWidth, screenHeight);
它的工作原理如果我以编程方式创建mainTableView,但我的segue被删除了,我没有找到任何以编程方式创建segue的解决方案。
如果你能帮我找到一个与故事板tableView一起使用的解决方案,那就太棒了。
答案 0 :(得分:0)
步骤1:添加委托UITableViewDataSource,UITableViewDelegate
@interface viewController: UIViewController<UITableViewDataSource,UITableViewDelegate>
{
UITableView *tableView;
}
第2步:
-(void)viewDidLoad
{
tableView=[[UITableView alloc]init];
tableView.frame = CGRectMake(10,30,320,400);
tableView.dataSource=self;
tableView.delegate=self;
tableView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
[tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"Cell"];
[tableView reloadData];
[self.view addSubview:tableView];
}
第3步:tableview的属性
//-- For table sections
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return 1;
}
//-- For no of rows in table
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return 10;
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
//-- Table header height if needed
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
return 50;
}
//-- Assign data to cells
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath] ;
if (cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
cell.textLabel.text=[your_array objectAtIndex:indexPath.row]; ***(or)*** cell.textLabel.text = @"Hello";
return cell;
}
//-- Operation when touch cells
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
// Your custom operation
}
答案 1 :(得分:0)
查看你的图片让我觉得你的CustomerListVC是一个UITableView子类,这意味着tableview是根视图,如果你使用的是基于UINavigationController的流,那么就不能轻易调整根视图的大小。
您可以做的是将UITableView放在容器中并从控制器处理其约束。
首先改变
class CustomerListVC : UITableViewController
到
class CustomerListVC : UIViewController
接下来抛弃Interface Builder
中的Customer List实例,然后拖入一个新的UIViewController
实例。 Xcode不喜欢你改变它的库存对象的基类。
将新UIViewController
个实例设为CustomerListVC
类型FileOwner
,然后将UITableView
拖到内容视图中。
设置边缘约束并为视图控制器中的约束添加出口。
从那里玩你认为合适的桌子。 e.g
-(void)squishAtBottomLeftAnimated:(BOOL)animate {
CGFloat animateTime = animate? 0.5:0;
[UIView animateWithDuration:animateTime animations:^{
self.topEdgeConstraint.constant = 400;
self.bottomEdgeConstraint.constant = 5;
self.leadingEdgeConstraint.constant = 5;
self.trailingEdgeConstraint.constant = 200;
[self.view layoutIfNeeded];
}];
}