帮助调试UITableView,显示无数据

时间:2011-07-14 22:22:58

标签: iphone objective-c uitableview

我的第一个任务是创建一个来自BarButtonItem的popover,然后根据该popover中的选择(这是一个tableview),另一个popover会从带有数据的单元格中显示出来。我所拥有的数据就是这样正确呈现的。在调试器中,我仍然看到我的cellForRowAtIndexPath中的数据与NSLog在self.CategoriesArray中的内容。但是出于某种原因,数据不会显示......但是,现在它们不需要初始弹出窗口,只需要一个来自BarButtonItem的弹出窗口。对于我的生活,我无法弄清楚为什么我的数据没有呈现,因为所有的改变应该是用第二个UITableView替换popover中的第一个UITableView。除非我遗漏了什么.....任何帮助将不胜感激。谢谢!

的cellForRowAtIndexPath:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    if (tableView == _filterTableView || tableView == _categoriesTableView) {

        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;

        // first popover
        if (tableView == _filterTableView) {
            simpleCell.textLabel.text = [_filterArray objectAtIndex:row];
            return simpleCell;
        }
        // second popover
        else if (tableView == _categoriesTableView) {
            simpleCell.textLabel.text = [_categoriesArray objectAtIndex:row];
return simpleCell;
    }

- (IBAction)FilterButtonPressed:(id)sender {

            // This part works for two popovers
//        UIViewController *contentViewController = [[UIViewController alloc] init];
//        self.FilterTableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 200, 150) style:UITableViewStylePlain];
//        self.FilterTableView.delegate = self;
//        self.FilterTableView.dataSource = self;
//        self.FilterTableView.bounces = NO;
//        self.FilterTableView.scrollEnabled = NO;
//        self.FilterTableView.backgroundColor = [UIColor clearColor];
//        contentViewController.contentSizeForViewInPopover = CGSizeMake(200, 150);
//        contentViewController.view = _filterTableView;
//        
//        self.FilterPopoverController = [[UIPopoverController alloc] initWithContentViewController:contentViewController];
//        [self.FilterPopoverController presentPopoverFromBarButtonItem:_filterButton permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
//        
//        [contentViewController release];

        // New code tfor one popover
        [self loadCategories];
        UIViewController *contentViewController = [[UIViewController alloc] init];
        self.CategoriesTableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 320, 500) style:UITableViewStylePlain];
        self.CategoriesTableView.delegate = self;
        self.CategoriesTableView.dataSource = self;
        self.CategoriesTableView.bounces = NO;
        self.CategoriesTableView.scrollEnabled = YES;
        self.CategoriesTableView.backgroundColor = [UIColor clearColor];
        contentViewController.contentSizeForViewInPopover = CGSizeMake(320, 500);
        contentViewController.view = _categoriesTableView;

        self.FilterPopoverController = [[UIPopoverController alloc] initWithContentViewController:contentViewController];
        self.FilterPopoverController.delegate = self;
        [self.FilterPopoverController presentPopoverFromBarButtonItem:_filterButton permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];        
        [contentViewController release];

    }
}

1 个答案:

答案 0 :(得分:0)

我从你的另一个问题中识别出这段代码。 :)您将文本颜色设置为白色,单元格的默认背景颜色也是白色。这是同一个bug吗?尝试为您的手机设置不同的背景颜色。

如果不能解决问题,还可以检查另外一件事。你设置这个:

contentViewController.view = _categoriesTableView;

但是从你的代码中不清楚_categoriesTableView来自哪里。您的实施顶部是否有@synthesize CategoriesTableView = _categoriesTableView;

在该视图分配上设置断点,并确保_categoriesTableView不是nil。