调整Grouped UITableView的宽度

时间:2013-05-10 21:59:59

标签: ios objective-c uitableview resize

我没有成功地搜索过这个问题的答案。我使用Grouped样式创建了一个UITableView。它是iPad的横向应用程序,我只想要左边的表格(在0,300,20,748区域),但设置tableView.frame = CGRectMake(0, 20, 300, 748)什么都不做。

#import "ViewController.h"

@interface ViewController ()

@property (strong, nonatomic) NSArray *sections;


@end

@implementation ViewController

@synthesize sections = _sections;


- (void)viewDidLoad
{

    UITableView *tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 20, 300, 748) style:UITableViewStyleGrouped];
    tableView.frame = CGRectMake(0, 20, 300, 748);

    tableView.delegate = self;
    tableView.dataSource = self;
    [tableView reloadData];

    NSArray *first = [NSArray arrayWithObjects:@"first", @"second", @"third", nil];
    NSArray *second = [NSArray arrayWithObjects:@"fourth", @"fifth", @"sixth", nil];

    self.sections = [NSArray arrayWithObjects:first, second, nil];

    self.view = tableView;

}

-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return [self.sections count];
}


-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return [[self.sections objectAtIndex:section] count];
}

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *MyIdentifier = @"MyReuseIdentifier";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];

    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:MyIdentifier];
    }

    cell.textLabel.text = [[self.sections objectAtIndex:[indexPath section]]objectAtIndex:[indexPath row]];
    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
    tableView.frame = CGRectMake(0, 20, 300, 748);

    return cell;
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

我正在寻找一种方法来调整表的大小,使其只有300像素宽,在左侧。关于如何做到这一点的任何建议?

1 个答案:

答案 0 :(得分:0)

假设您的ViewControllerUIViewController,而不是让表格查看主视图(将为您调整大小),只需添加表格视图。

替换:

self.view = tableView;

使用:

[self.view addSubview:tableView];

现在,表格视图将保留您设置的框架。

由于您希望将表格视图放在左侧,并且可能是为了填充高度,您真的应该这样做:

- (void)viewDidLoad {
    UITableView *tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 300, self.view.frame.size.height) style:UITableViewStyleGrouped];

    tableView.delegate = self;
    tableView.dataSource = self;

    NSArray *first = [NSArray arrayWithObjects:@"first", @"second", @"third", nil];
    NSArray *second = [NSArray arrayWithObjects:@"fourth", @"fifth", @"sixth", nil];

    self.sections = [NSArray arrayWithObjects:first, second, nil];

    tableView.autoresizingMask = UIViewAutoresizingFlexibleHeight;
    [self.view addSubview:tableView];

    [tableView reloadData]; // don't reload until it's added and the data is ready
}