2011-07-07 2 views
0

私のiPhoneアプリケーションに「お気に入りに追加」機能を実装しました。実行時に好きなテーブルビューにセルを追加する以外は正常に動作します。例えば、私は以下の方法を与えました。iPhone:tabelviewが既に読み込まれた後にテーブルビューに行を追加するには?

- (void)viewWillAppear:(BOOL)animated 
{ 
    [super viewWillAppear:animated]; 

    tableView.hidden = YES; 
    warningLabel.hidden = YES; 

    // Load any change in favourites 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    NSData *data = [defaults objectForKey:kFavouriteItemsKey]; 
    self.favourites = [NSKeyedUnarchiver unarchiveObjectWithData:data]; 

    if([self.favourites count] > 0) 
     tableView.hidden = NO; 
    else 
     warningLabel.hidden = NO; 
} 

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
    return 1; 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    return [self.favourites count]; // Favorites is a dictionary contains required data 
} 

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

    static NSString *CellIdentifier = @"Cell"; 

    UITableViewCell *cell = [tView dequeueReusableCellWithIdentifier:CellIdentifier]; 

    if (cell == nil) { 
     cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; 
    } 

    cell.textLabel.text = [NSString stringWithFormat:@"index: %d",indexPath.row]; 

    return cell; 
} 

このコードは正常に動作し、初めて正しく行を表示します。テーブルビューが読み込まれた後、お気に入りに新しいアイテムを追加したり、アイテムを削除したりすると、テーブルビューに何の変化もありません。私はお気に入りの辞書で利用可能なものを正確に表示したい。 CellForRowAtIndexPathは、ViewAppearを再度呼び出すと呼び出されないようです。要件を達成するために使用できるTableViewのメソッドはありますか?

答えて

6

私はあなたが非常に簡単な方法は、あなたが変更を加えるたびちょうど[tableView reloadData]を呼び出すことです[tableView reloadData];

+0

よろしくお願いします。ありがとう! – applefreak

+0

@AppleDeveloper、乾杯;-) – EmptyStack

0

を呼び出すために見逃していると思います。

reloadDataの方法では十分ではないと判断しない限り、より優れた(大きなテーブルの方が速く、アニメーションも可能ですが、よりエレガントです)、はるかに複雑な方法です。

関連する問題