0

The Storyboard: http://s7.directupload.net/images/140717/z5hwmezv.png

Hey guys, Ive got an app that recursively triggers a the same tableview controller (lets say there are files and folders in it) until you trigger a file instead of a folder. When a file is clicked, it jumps into the GLKit View Controller.

Now I want to resize the tableView programmatically, which wont work. I already got the window size, which I'm going to use for calculation the position and size of the tableView:

CGFloat screenWidth = screenRect.size.width;
CGFloat screenHeight = screenRect.size.height;

I tried different ways to change the size like the following, which dont change anything.

mainTableView.frame = CGRectMake(0, 0, screenWidth, screenHeight);

It works If I programmatically create the mainTableView, but then my segue gets deleted and I did not found any solution to create a segue programmatically.

It would be great if you can help me to find a solution that works with a storyboard tableView.

4

2 回答 2

0

看你的照片让我觉得你的 CustomerListVC 是一个 UITableView 子类,这意味着 tableview 是根视图,如果你使用的是基于 UINavigationController 的流,那么你不能轻易地调整根视图的大小。

您可以做的是将 UITableView 放在容器中并从控制器操纵其约束。

第一次改变

class CustomerListVC : UITableViewController

class CustomerListVC : UIViewController

接下来扔掉客户列表实例Interface Builder并拖入一个新UIViewController实例。Xcode 不喜欢您更改其库存对象的基类。

将新UIViewController实例设为CustomerListVC类型FileOwner并将 a 拖到UITableView 内容视图中。

设置边缘约束并将出口添加到视图控制器中的约束。

在此处输入图像描述

从那里玩你认为合适的桌子。例如

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

    }];
}
于 2014-07-18T21:41:44.260 回答
0

第一步:添加委托 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
}
于 2014-07-17T22:30:44.070 回答