0

我正在尝试(徒劳)MasterViewController从另一个 View Controller重新加载 tableView SitesViewController。我在以下代码中使用此代码SitesViewController

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSInteger row = [[self tableView].indexPathForSelectedRow row];

    //NSArray *appcell = [sitesMenu objectForKey:@"Table"];

    NSLog(@"AppCell %@", sitesMenu);

    NSDictionary *entry = [sitesMenu objectAtIndex:row];



    self.siteid = [entry objectForKey:@"SITEID"];

    NSLog(@" sample SiteView %@", siteid);

    NDSClassMasterViewController *detailControllerTwo = [[NDSClassMasterViewController alloc] init];
    detailControllerTwo.globalid = siteid;

    NSLog(@"message %@", detailControllerTwo.globalid);



    [detailControllerTwo fetchTweets];



    dispatch_async(dispatch_get_main_queue(), ^{
        [detailControllerTwo.tableView reloadData];
        NSLog(@"%@", detailControllerTwo);
    });
    // Navigation logic may go here. Create and push another view controller.
    /*
     <#DetailViewController#> *detailViewController = [[<#DetailViewController#> alloc] initWithNibName:@"<#Nib name#>" bundle:nil];
     // ...
     // Pass the selected object to the new view controller.
     [self.navigationController pushViewController:detailViewController animated:YES];
     */
}

以及我正在调用的方法的代码:

- (void)fetchTweets
{
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{



        NSString *siteurl = [[NSString alloc] initWithFormat:@"http://adhoc.nyxtek.co.za/spfjsonws/default2.aspx?siteid=%@", globalid];
        NSData* data = [NSData dataWithContentsOfURL:
                        [NSURL URLWithString: siteurl]];

        NSError* error;

        menuItems = [NSJSONSerialization JSONObjectWithData:data
                                                 options:kNilOptions
                                                   error:&error];

        NSLog(@"%@", menuItems);

        dispatch_async(dispatch_get_main_queue(), ^{

            [self.tableView reloadData];
        });
    });
}

我什至在 SiteViewController didSelectRow 方法中添加了重新加载代码。

我已经读过我应该为它添加一个属性并合成,但我已经尝试过了,但不确定如何为 UITableView 添加一个属性以引用现有的。

fetchTweets 代码运行,但 TableView 不会重新加载。

任何援助将不胜感激。

编辑

这是我在单元格中加载项目的 TableView 代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"TweetCell";

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

    //NSString *name = [[[menuItems objectForKey:@"Table"] objectAtIndex:0] objectForKey:@"MENUID"];
    NSDictionary *tweet = [[menuItems objectForKey:@"Table"] objectAtIndex:indexPath.row];
    //NSLog(@"%@", tweet);

    NSString *text = [tweet objectForKey:@"MENUDESC"];
    NSString *name = [tweet objectForKey:@"MENUDESC"];
    NSLog(@"TEST 1%@", text);
    cell.textLabel.text = text;
    cell.detailTextLabel.text = [NSString stringWithFormat:@"by %@", name];

    return cell;
}
4

1 回答 1

0

为什么不简单地在视图控制器中编写一个包含重新加载数据的代码的函数,而不是通过属性公开表视图?

EG 而不是:

    [detailControllerTwo.tableView reloadData];

在 MasterViewController 中声明一个方法,如下所示:

- (void) updateTable
{
    // tableView is declared as an IBOutlet
    [tableView reloadData];
}

然后你可以调用它:

dispatch_async(dispatch_get_main_queue(), ^{
    [detailControllerTwo updateTable];
    NSLog(@"%@", detailControllerTwo);
});
于 2013-03-03T11:56:59.573 回答