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ステートメントは、セルがnullであることを示しています。

ありがとう

ジャック

4

4 に答える 4

2

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPathメソッドの代わりにコードを記述する必要がありますreloadData

于 2012-06-19T11:17:14.937 に答える
0

ここにリンクがあります。このチュートリアルに進み、アプリケーションに応じていくつかの変更を加えてください。うまくいくと思います。

于 2012-06-19T11:30:03.517 に答える
0

その場合、セルを NSArray にキャッシュする必要があります。必要に応じて、その配列のセルを使用し、tableView からフェッチしないでください。

于 2012-06-19T11:16:43.847 に答える
0

これは、UITableView を再読み込みする適切な方法ではありません。

U でメッセージ[self.tableView reload]を表示する必要があります- (void) viewDidAppear:(BOOL)animated --> テーブル ビューのデータ ソースに移動し-(UITableViewCell*)cellForRowatIndexPath:(NSIndexPath indexPath)ます。[table cellForRowAtIndexPath]- (void) reloadTableData

于 2012-06-19T11:25:04.947 に答える