This question already has answers here:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath is not being called

(4个答案)


7年前关闭。




我知道标题足以说明问题,并且我知道这个问题已经问过几次了,但是在这种情况下,我无法使其正常工作。

我已经使用过UITableViews,并且它们都运行良好,但是这次,我什至用其他工作副本检查了我的代码,但是它不起作用。

所以,这是故事:

我在 Storyboard中的一个 View Controller 中有一个表 View ,其中包含一个名为ContactViewController的自定义类,并且使用名为favContactsTable的 socket 将其连接至代码

以下是.h和.m的相关部分:

ContactViewController.h
@interface ContactViewController : UIViewController <UITableViewDataSource>

// Other Stuff
   .
   .

@property (retain, nonatomic) IBOutlet UITableView *favContactsTable;

   .
   .
// Other Stuff

@end

这是UITableViewDataSource协议(protocol)的已实现功能:

ContactViewController.m
// Rest of the code
.
.
.
.
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 1;
}

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

- (UITableViewCell *)tableView:(UITableView *)tv cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSLog(@"TEST OUTPUT");

    //Test
    int a = 1; // Breakpoint
    a++;

    cell = [self.favContactsTable dequeueReusableCellWithIdentifier:@"FavContactCell"];
    if (cell == nil)
    {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"FavContactCell"];
    }
    cell.textLabel.text = @"FAV";
    .
    .
    .
}

我的 View Controller 中还有另一个按钮,可以为该表重新加载数据,但是当我按下该按钮时,不会触发任何断点,也不会打印任何日志,因此不会调用任何函数。这是该按钮的代码:
- (IBAction)refreshTables:(id)sender
{
    [self.favContactsTable reloadData];
}

我几乎检查了其他所有具有动态表格 View 的项目,而我无法弄清楚出了什么问题。

请不要将其他类似的问题作为重复项提及,因为我已经阅读了所有这些问题(或者至少阅读了大多数问题),并且我确定我没有为每个部分返回0行,并且我确定favContactsTable不是当我向其发送nil消息时... reloadData等等!

任何可能有所帮助的想法都非常感谢。

最佳答案

@interface myViewController : UIViewController <UITableViewDelegate, UITableViewDataSource> {


}

设置代表

拖到您的viewcontroller图标

还要在代码中检查您的单元格标识符
- (UITableViewCell *)tableView:(UITableView *)tableView
         cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"SimpleTableCell"];

    if (cell == nil)
    {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle
                                      reuseIdentifier:@"SimpleTableCell"];

    }
return cell;

}

10-07 12:46