0

我使用以下代码尝试更新 UITableView 中的几个静态单元格:

- (void) viewDidAppear:(BOOL)animated{
    [self reloadTableData];
}

- (void) reloadTableData {
    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
    NSIndexPath *path = [NSIndexPath indexPathForRow:0 inSection:8];
    UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:path];
    if ([[userDefaults objectForKey:@"canDeleteReceipts"] isEqualToString:@"0"])
    {
        cell.contentView.alpha = 0.2;
        cell.userInteractionEnabled = NO;
    }
    else 
    {
        cell.contentView.alpha = 1;
        cell.userInteractionEnabled = YES;
    }

    path = [NSIndexPath indexPathForRow:1 inSection:8];
    cell = [self.tableView cellForRowAtIndexPath:path];
    if ([[userDefaults objectForKey:@"canDeleteMileages"] isEqualToString:@"0"])
    {
        cell.contentView.alpha = 0.2;
        cell.userInteractionEnabled = NO;
    }
    else 
    {
        cell.contentView.alpha = 1;
        cell.userInteractionEnabled = YES;
    }

    path = [NSIndexPath indexPathForRow:2 inSection:8];
    cell = [self.tableView cellForRowAtIndexPath:path];
    if ([[userDefaults objectForKey:@"canDeleteAll"] isEqualToString:@"0"])
    {
        cell.contentView.alpha = 0.2;
        cell.userInteractionEnabled = NO;
        NSLog(@"%@", cell);
    }
    else 
    {
        cell.contentView.alpha = 1;
        cell.userInteractionEnabled = YES;
    }

}

但是它不起作用,代码被调用但什么也不做。谁能解释当视图出现时我如何更新静态单元格的属性以实现类似上述的效果?

NSLog 语句说单元格为空。

谢谢

杰克

4

4 回答 4

2

您需要编写代码- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath而不是您的reloadData方法。

于 2012-06-19T11:17:14.937 回答
0

在这种情况下,您应该将单元格缓存在 NSArray 中。需要时,使用该数组中的单元格,不要从 tableView 中获取。

于 2012-06-19T11:16:43.847 回答
0

这不是重新加载 UITableView 的正确方法。

[self.tableView reload]您必须在- (void) viewDidAppear:(BOOL)animated --> 转到表视图的 DataSource 中给出消息,即-(UITableViewCell*)cellForRowatIndexPath:(NSIndexPath indexPath),有您各自的单元格使用该方法 -[table cellForRowAtIndexPath]并在您的方法中执行您尝试的操作- (void) reloadTableData

于 2012-06-19T11:25:04.947 回答
0

这是链接。阅读本教程并根据您的应用程序进行一些更改。我认为它适合您。

于 2012-06-19T11:30:03.517 回答