3

所以它真的很奇怪......我有一个名为 ListEventsViewController 的 ViewController

在头文件中:

@interface ListEventsViewController : UIViewController <UITableViewDelegate, UITableViewDataSource>
@property (weak, nonatomic) IBOutlet UITableView *eventsTable;
@property (strong, nonatomic) NSArray *events;

@end

在实现中,我在下面调用了几乎强制性的函数:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    return [events count];
}

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

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    UITableViewCell *cell = nil;
    cell = [eventsTable dequeueReusableCellWithIdentifier:@"eventCell"];

    if(!cell){
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"eventCell"];
    }

    NSString *textLabelTitle = [[events objectAtIndex:indexPath.row] objectForKey:@"name"];
    NSString *textLabelDetail = [[events objectAtIndex:indexPath.row] objectForKey:@"date"];
    //cell.imageView.image = someimage;
    NSLog(@"Text Label Title: %@", textLabelTitle);
    NSLog(@"Text Label Detail: %@", textLabelDetail);
    cell.textLabel.text = textLabelTitle;
    cell.detailTextLabel.text = textLabelDetail;

    return cell;
}

问题是函数 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ 没有被调用,因此单元格没有被填充。也没有分配单元格的数量。这可能是什么原因造成的?

在我看来,这是一张 h 和 IB 的图片。在此处输入图像描述

4

4 回答 4

6

您在屏幕截图中说明您已将表格链接到其 IBOutlet,但您尚未将表格视图的委托或数据源链接到您的控制器,因此您的表格委托方法cellForRowAtIndex不会被调用。链接这些应该可以解决您的问题。

于 2012-09-06T00:48:37.287 回答
2

我有这个,这必须是你的解决方案

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{

if (cell==nil) {
        cell=[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
         mysampleimage = [[UIImageView alloc]initWithFrame:CGRectMake(3,3, 40, 40)];
         mysampleimage.image=[UIImage imageNamed:@"a.png"];
         mysampleimage.tag=13;
         [cell.contentView addSubview:mysampleimage];

         myButton = [[UIButton alloc]init];
         myButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
         myButton.frame = CGRectMake(165, 10, 65, 30.);
         [myButton setTitle:@"Show" forState:UIControlStateNormal];
         myButton.tag = 14;
         [cell addSubview:myButton];

         lbl = [[UILabel alloc]initWithFrame:CGRectMake(50, 6, 200, 43)];
         lbl.tag=12;
         [cell.contentView addSubview:lbl];
     }
     else
     {
         lbl=(UILabel *)[cell.contentView viewWithTag:12];
         mysampleimage=(UIImageView *)[cell.contentView viewWithTag:13];
         myButton = (UIButton *)[cell.contentView viewWithTag:14];
     }

     myButton.accessibilityLabel = lbl.text;

     [myButton addTarget:self action:@selector(myShow:) forControlEvents:UIControlEventTouchUpInside];
     return cell;


}
于 2014-05-27T09:14:52.743 回答
1

您可以在编码中使用以下行:

tableview.delegate = self;
tableview.datasource = self;
于 2013-10-03T12:58:08.383 回答
1

帮助我的是注释掉 numberofsectionsintableview

于 2015-10-20T16:40:42.593 回答