UITableView reloadData不起作用

时间:2013-06-22 21:02:51

标签: ios uitableview reloaddata xcode4.6

我已经阅读了所有类似的问题并尝试了所有建议,但仍然没有。也许有人可以发现我的缺陷。

我的视图控制器是通过另一个视图控制器,通过两个按钮之一启动的。按钮点击发送NSNotification(带附加数组),此视图控制器预测此通知,然后调用此方法:

- (void)addContentToArray:(NSNotification *)aNotification {

    array = [NSArray arrayWithArray:[aNotification object]];

    ([array count] == 6) ? (category = YES) : (category = NO);

    [myTableView reloadData];
    NSLog(@"%d", [array count]);
    NSLog(@"%@", myTableView);
}

每次都调用该方法,我可以从更改数组计数中看到。这里的通知对象是从前一个视图控制器传递的数组,我将这些对象分配给我的本地数组属性 - 这是我的UITableView源。所以我要做的是尝试重用UITableView来显示传递的数组的元素。并且它适用于第一个传递的数组(以先到者为准)。

当我点击第二个按钮时,新数组成功传递(如前所述,我知道[数组计数]的日志不同:3对不同数组中的6个对象)。但是,没有发生的是UITableView不刷新(尽管我在表中选择行时传递的值来自正确的数组,即使显示了错误的值)。

以下是UITableView数据源方法:

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

    return [array count];
}

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

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Identifier"];

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

    cell.textLabel.text = [[array objectAtIndex:indexPath.row] objectForKey:@"name"];

    if (category) {
        cell.detailTextLabel.text = [[array objectAtIndex:indexPath.row] objectForKey:@"description"];
    }

    return cell;
}

那么,我做错了什么?

可能有所帮助的其他一些注意事项:

  • NSLog(@“%@”,myTableView);返回(null),这有点令人担忧。 myTableView这里是来自我的nib文件的UITableView,它正确连接到视图控制器,声明为属性和合成
  • 有问题的视图控制器是PKRevealController的rightViewController,所以当重复调用它时,会调用viewWillAppear方法,但不会调用viewDidLoad(尽管如我所说,每次调用addContentToArray:方法) ())
  • 另外,对于那些稍微熟悉PKRevealController的人 - 当我尝试从我的视图控制器中记录focusedController时,它说frontViewController - 移动以显示我的视图控制器的那个 - 是专注的。这可能是myTableView为(null)的原因吗?

我很感激任何见解和帮助!

3 个答案:

答案 0 :(得分:0)

需要更多代码,您创建的部分并调用Myviewcontroller的{​​{1}}方法。 我认为您在addContentToArray的对象中使用了释放代码,尝试使用隐藏该部分。

答案 1 :(得分:0)

我设法通过编辑initWithNibName方法(旧行注释掉)来解决问题

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {

    //self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    self = [super initWithNibName:@"PurposeCategoryViewController" bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

显然,它确实与我的视图控制器(称为PurposeCategoryViewController)不是PKRevealController层次结构中的顶级/聚焦视图控制器这一事实有关。所以,我只需要专门指出我的nib文件。

答案 2 :(得分:0)

您在此委托方法中返回的值是什么: - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 确保它是1