1

私はAビューコントローラーが別のBビューコントローラーを切り替えたい、最初に、私は押して(GuestBookボタンを押す)、TableViewは情報を取得するOK、戻るボタンを押してOK、もう一度押す(GuestBookボタンを押す)、JSONデータNSLogにはメッセージがあるが、tableviewデータは表示されない! どうしたの?

PS:私はストーリーボードを使用します!カスタム セル xib を持っています!

午前

- (IBAction)toHostGuestBook:(id)sender {
    hgbvc = [self.storyboard instantiateViewControllerWithIdentifier:@"ToHostGuestBookSegue"];
    hgbvc.eventidStr = eventidStr;
    NSLog(@"hgbvc.eventidStr:%@",hgbvc.eventidStr);
    [self.navigationController pushViewController:hgbvc animated:YES];

}

Bm

- (IBAction)backToHostMainEventDetail:(id)sender {
    [self.navigationController popViewControllerAnimated:YES]; 
}

Bm

// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *GuestBookCellIdentifier = @"GuestBookCellIdentifier";

    static BOOL nibsRegistered = NO;
    if (!nibsRegistered) {
        UINib *nib = [UINib nibWithNibName:@"GuestBookCell" bundle:nil];
        [tableView registerNib:nib forCellReuseIdentifier:GuestBookCellIdentifier];
        nibsRegistered = YES;
    }

    gbcell = [tableView dequeueReusableCellWithIdentifier:GuestBookCellIdentifier];
    if (gbcell == nil) {
        gbcell = [[GuestBookCell alloc]
                   initWithStyle:UITableViewCellStyleDefault
                   reuseIdentifier:GuestBookCellIdentifier];
    }

    NSDictionary *dict = [messageRows objectAtIndex: indexPath.row];

    gbcell.nicknameStr = [dict objectForKey:@"vusr"];
    gbcell.dateStr = [dict objectForKey:@"date"];
    gbcell.messageStr = [dict objectForKey:@"message"];


    return gbcell;

}
4

3 に答える 3

0

popViewControllerのコードの下にあるテーブルビューデータをリロードしてみてくださいこれはあなたが望むように動作します

于 2012-11-27T11:57:35.157 に答える
0

これを追加して試してください

-(void)viewWillAppear:(BOOL)animated

{

[super viewWillAppear:animated];

[self.tableView reloadData]; //your table view name

}
于 2012-11-27T11:21:36.583 に答える
0

hgbvc B コントローラーは A コントローラーによって保持されます。そのため、B コントローラーが飛び出したときに解放されません。B コントローラーが再度プッシュされたとき、viewDidLoad メソッドは呼び出されませんでした。

解決策: テーブルビュー ロード データ メソッドを抽出します。B を押したときにこのメソッドを呼び出します。

Bコントローラーで:

- (void)showDataWithEventId:(NSString *)eventId
{
    //retrive data 
    //table view reload
}
于 2012-11-27T11:37:25.867 に答える