UITableView可调整大小吗?我可以指定不同的帧吗?

时间:2011-08-23 08:46:42

标签: iphone objective-c ios

UITableView可调整大小吗?我可以指定不同的框架吗?

我在UITableViewController中尝试这一行,但它不起作用(在iPhone上):

self.tableView.frame = CGRectMake(0, 0, 300, 200);

感谢

7 个答案:

答案 0 :(得分:17)

不在UITableViewController中,因为在UITableViewController中self.view == self.tableView

尝试使用UIViewController,根据需要实现UITableViewDataSource和UITableViewDelegate协议。

答案 1 :(得分:7)

如果您使用的是UITableViewController,则无法调整self.tableview.frame或self.view.frame的大小。但您可以做的是

您可以使用以下方式设置上边距:

UIEdgeInsets inset = UIEdgeInsetsMake(50, 0, 0, 0);
self.tableView.contentInset = inset;

这不是一个好习惯,如果你想要更多空间,你可以使用它。

不应该使用UITableViewController,只需使用UIViewController并以编程方式创建UITableview

答案 2 :(得分:4)

是的,UITableView可以调整大小,但是在使用UITableViewController时则不行。

尝试将UITableView添加到普通的UIViewController,并让它实现所需的委托方法。这样,您可以更灵活地自定义UITableView。

阅读以下两个链接

http://www.skylarcantu.com/blog/2009/09/24/dont-use-uitableviewcontroller-really/

http://flux88.com/2010/03/is-uitableviewcontroller-useless/

答案 3 :(得分:4)

扩展Berk的答案:

  1. 使用XCode的模板创建常规视图控制器。
  2. 添加<UITableViewDelegate, UITableViewDataSource>
  3. 添加@property IBOutlet UITableView,将一个UITableView对象添加到XIB并链接它们。
  4. UITableView的委托和数据源设置为该类。
  5. 添加以下方法:
  6. //     #pragma mark - UITableViewDataSource

    - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
        return 1;
    }
    
    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
        return 1;
    }
    
    - (UITableViewCell *)tableView:(UITableView *)aTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {  
        NSString *cellIdentifier = @"ServiceCell";
        UITableViewCell *cell = (UITableViewCell*)[self.tableView dequeueReusableCellWithIdentifier:cellIdentifier];
        if (cell == nil) {
            cell = [[UITableViewCell alloc] init];
        }
        return [cell autorelease];
    }
    

    结果是一个带有可调整大小的tableView的UITableViewController。

答案 4 :(得分:0)

您可以使用

等方法在UITableViewController中调整tableView的大小
- (void)viewWillAppear:(BOOL)animated
{
    [self.tableView setFrame:CGRectMake(x, y, w, h)];
}

它也适用于viewDidAppear ...

答案 5 :(得分:0)

试试这个:

- (void)viewDidAppear:(BOOL)animated
{   
    // Set your tableView frame in UITableViewController
    [self.tableView setFrame:CGRectMake(0, 320, 320, 480)];
    // To remove the black color space up of the table view and in this case I set it as white
    [[[UIApplication sharedApplication] keyWindow] setBackgroundColor:[UIColor whiteColor]];
}

答案 6 :(得分:0)

为了在使用UITableViewController时调整UITableView的大小,只需覆盖viewWillLayoutSubviews,如下所示:

- (void)viewWillLayoutSubviews {
    [super viewWillLayoutSubviews];

    CGRect frame = self.view.superview.bounds;
    frame.size.width -= 54.0;
    self.tableView.frame = frame;
}