UITableViewDataSource方法-cellForRowAtIndexPath

时间:2011-07-15 03:09:31

标签: iphone

如果我在NSArray中有我的数据,并且我可以在我的-cellForRowAtIndexPath方法中对那些数据进行NSLog,那么我是否有任何理由无法使用以下代码在我的UITableView中查看数据:

static NSString *simpleIdentifier = @"SimpleIdentifier";
        UITableViewCell *simpleCell = [tableView dequeueReusableCellWithIdentifier:simpleIdentifier];
        if (simpleCell == nil) {
            simpleCell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleIdentifier];
        }
        NSUInteger row;
        row = [indexPath row];
        simpleCell.textLabel.textColor = [UIColor whiteColor];
        simpleCell.selectionStyle = UITableViewCellSelectionStyleNone;
            simpleCell.textLabel.text = [_categoriesArray objectAtIndex:row];
return simpleCell;

我想知道我是否错过了“陷阱”或其他什么。我在一个popover中逐字记录这个数据,它工作正常。但是当我把它放在另一个弹出窗口时,它什么都没显示。所以我很难过!任何帮助都会很棒。感谢。

3 个答案:

答案 0 :(得分:0)

您为表定义了多少行和多个部分?如果未正确定义它们,则不会填充任何数据。我还假设你的tableViewCell不是白色的,因为你将文本的颜色设置为白色。

答案 1 :(得分:0)

你正在构建你的单元格:

simpleCell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleIdentifier];

默认情况下,这会创建一个具有不透明白色背景的单元格。然后,您将文本颜色设置为白色:

simpleCell.textLabel.textColor = [UIColor whiteColor];

尝试为您的手机设置不同的背景颜色:

simpleCell.backgroundColor = [UIColor grayColor];

如果您确实需要将表格透明,则可以将单元格和tableView本身的颜色设置为[UIColor clearColor],但要注意透明度会严重影响滚动帧速率。你最好尽可能使用不透明的视图。

答案 2 :(得分:0)

感谢大家帮我解决这个问题。这不是颜色问题。我终于得到了它的工作,但我不太清楚为什么。也许其他人可以为它现在的工作原理而烦恼。所以在我的cellForRowAtIndexPath方法和其他数据源方法中,我有像

这样的代码
if (tableView == tableView1 || tableView == _categoriesTableView || tableView == tableView2) {
...
if (tableView == tableView1) {
//do stuff
}
else if (tableView == _categoriesTableView) {
// do real stuff
}
else {
// do stuff
}

当我第一次使用它时,我从一个显示tableView1的按钮有一个弹出窗口,然后你会在该表中选择一行,以呈现另一个像_categoriesTableView的弹出窗口。所以这段代码工作正常。但是,当我尝试更改第一个弹出框以显示_categoriesTableView时,保留所有其他代码相同,没有数据会正确显示。然后我没有替换tableView1初始化popover数据,我仍然初始化它,但只是没有在弹出框中显示它,现在一切正常。不确定为什么tableView1的未初始化内存会导致问题,因为当我使用断点跟踪代码时,我的“做真实的东西”被运行,只是不会做它应该做的事情(在UITableView中显示数据)。