嵌套的UITableViewController不显示任何单元格

时间:2014-07-07 09:57:58

标签: ios iphone uitableview ios7 uiviewcontroller

我使用Apple docs中的方法向我的主视图控制器添加了一个UITableViewController:

- (void)viewWillAppear:(BOOL)animated {
    myTableViewController = [MyTableViewController new];
    [self displayContentController:myTableViewController];
}

- (void)displayContentController:(UIViewController *)viewController; {
    [self addChildViewController:viewController];
    viewController.view.frame = self.view.bounds;
    [self.view addSubview:viewController.view];
    [viewController didMoveToParentViewController:self];
}

我想在这个控制器中显示一些示例单元格:

[self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"Cell"];

(我认为我不需要任何配置,因为它是UITableViewController,而不是UITableView)

 (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];
    cell.textLabel.text = @"Under development";
    return cell;
}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return 5;
}

但我能看到的只是空单元格(我也试图改变背景颜色以确保它不仅仅是标签颜色):

enter image description here

几个小时后,我不知道自己做错了什么。你知道我错过了什么吗?

3 个答案:

答案 0 :(得分:0)

你必须使用它:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:@"cell"];
    if(!cell)
    {
        cell=[[UITableViewCell alloc]init];
    }
    cell.backgroundColor = [UIColor clearColor];
    cell.textLabel.text = @"Under development";
    return cell;
}

答案 1 :(得分:0)

试一试:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return Table_Arr.count;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:@"subwaysurfer"];
    if(!cell)
    {
        cell=[[UITableViewCell alloc]init];
    }
     UIImageView *imgg;
    UILabel *txt;
    UIImageView *Acc_img;




    imgg=[[UIImageView alloc]initWithFrame:CGRectMake(10,5, 50, 50)];

    imgg.image = [UIImage imageNamed:[imageArr objectAtIndex:indexPath.row]];




    cell.highlighted=YES;
    cell.backgroundColor=[UIColor clearColor];
    txt=[[UILabel alloc]initWithFrame:CGRectMake(20, 0, self.view.frame.size.width-80, 60)];
    txt.numberOfLines = 3;
    txt.text=[Table_Arr objectAtIndex:indexPath.row];
    txt.backgroundColor=[UIColor clearColor];
   // txt.textColor=[UIColor colorWithRed:66.0/255.0 green:51.0/255.0 blue:57.0/255.0 alpha:1.0];


    txt.textColor=[UIColor colorWithRed:44.f/255.f green:78.f/255.f blue:134.f/255.f alpha:1];


    txt.font=[UIFont fontWithName:@"AvenirNextCondensed-Medium" size:16.0];

    Acc_img=[[UIImageView alloc]initWithFrame:CGRectMake(self.view.frame.size.width-40, 20, 20, 20)];
    Acc_img.image=[UIImage imageNamed:@"arrow.png"];

    if(UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPad){
        imgg.frame = CGRectMake(10, 5, 80, 80);
        txt.frame = CGRectMake(120, 10, self.view.frame.size.width-160, 70);
        Acc_img.frame = CGRectMake(self.view.frame.size.width-80, 25, 40, 40);
        txt.font=[UIFont systemFontOfSize:28.0];

    }


    [cell addSubview:imgg];

    [cell addSubview:txt];

    [cell.contentView addSubview:Acc_img];


    return cell;
}

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{



}


// fixed font style. use custom view (UILabel) if you want something different

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{

    if(UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPad){
        return 90;
    }
    else{
        return 60;
    }


}

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{
    return [[UIView alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 0)];
}

答案 2 :(得分:0)

好的,问题解决了。看来,即使使用内置属性tableView的UITableViewController,也需要初始化tableView(或者至少它对我有帮助)。

self.tableView = [UITableView new];