gpt4 book ai didi

iphone - iOS 7 UITableView 索引路径行属性为零

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:20:19 24 4
gpt4 key购买 nike

我有一个 UITableView,它包含一个自定义的 UITableViewCell。为了测试,我有一个包含三个字符串的数组。 UITableView 委托(delegate)方法按预期调用,但是,tableView:cellForRowAtIndexPath 委托(delegate)总是传递 NSIndexPath 实例,其 row 属性始终是 == 无:

tableView:cellForRowAtIndexPath 被调用 3 次(我的数组中的每个对象一次)。我从设计器( Storyboard)中添加了 tableView 并为其创建了一个导出。每次调用此委托(delegate)时,UITableViewCell 实例似乎都已正确实例化。我只是想不通为什么 [indexPath row] 值总是 nil

接口(interface):

在实现文件中:

@interface FirstViewController ()
@property(nonatomic, strong)AppDelegate *sharedDelegate;
@property(nonatomic, strong)NSArray *userList;
@end

在标题中:

@interface FirstViewController : UITableViewController <FacebookDelegate>
@property (strong, nonatomic) IBOutlet UITableView *tableView;
@end

初始化自定义单元格:

-(void)viewDidLoad
{
[self.tableView registerClass: [ListCategoryCell class]forCellReuseIdentifier:@"ListCategoryCell"];
self.userList = @[@"d", @"g", @"f"]; // make some test data
}

代表这让我抓狂:

//NSIndexPath.row is nil ?!
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *MyIdentifier = @"ListCategoryCell";
ListCategoryCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier forIndexPath:indexPath];
if (cell == nil) {
cell = (ListCategoryCell *)[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:MyIdentifier];
}
cell.titleLabel.text = [self.userList objectAtIndex:[indexPath row]];
cell.detailLabel.text = @"Detail";

return cell;
}

我错过了什么吗?谢谢!

现在工作

我遗漏了一些我认为与我的问题非常相关的上下文(我不应该遗漏)。我最初创建了一个 UIViewController,然后向其中添加了一个 UITableView 作为 View 。在 UITableView 中,我创建了一个自定义原型(prototype)单元格。我做了所有的家务活:

UIViewController 实现了 UITableViewDelegateUITableViewDatasource。为 UITableView 创建和输出。连接所有网点

除了 indextPath.row 属性始终为 nil 之外,一切似乎都正常。我发现的一些资源建议在调用 uitableview 委托(delegate)之前自定义单元格不可见。

最后我让我的类成为 UITableViewController 的子类。事情开始奏效了。我仍然很好奇为什么我最初的尝试失败了。

感谢大家的宝贵时间。一些很棒的评论帮助我调查了一些“很高兴知道”的主题。

最佳答案

如果你想让它管理你的 TableView ,你需要在 View Controller 中提供至少两个方法。它们是:

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

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

您已经提供了第二个,因此您的 TableView 实际上可以生成单元格,但它不知道有多少。第一个方法返回的默认值为 nil。这就是为什么您甚至没有索引路径。

可选:

-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView

默认值是一个,所以如果你只有一个部分,你不需要覆盖它

确保您的 View Controller 也遵循委托(delegate)和数据源协议(protocol)。

关于iphone - iOS 7 UITableView 索引路径行属性为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19330394/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com