无法重新加载集合视图 - null



我正在开发一个简单的应用程序,从Dribbble下载图像,但我有问题重新加载数据为我的集合视图。我有两个视图设置与ViewDeck,中心是我的主视图,其中包含集合视图和另一个视图包含表视图与设置,从那里我试图调用一个方法在第一个视图和重载数据时项目被选中,但它只是不工作。

我试图从主窗口调用相同的方法使用按钮->像一个魅力,但从第二个窗口它只是不更新数据。

我试着调试,似乎我的集合是空的,当重新加载被调用,不知道为什么。

SettingsViewController

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    NSLog(@"tap");
    JKViewController *appDelegate = [[JKViewController alloc] init];
    appDelegate.dataHasChanged = YES;
    [appDelegate refresh];
    [self.viewDeckController closeLeftViewAnimated:YES];
}

MainView

- (void)refresh{
    NSLog(@"refresh");
    if(dataHasChanged)
    {
        switch (listType) {
            case 0:
                [self refreshWithList:SPListPopular];
                break;
            case 1:
                [self refreshWithList:SPListEveryone];
                break;
            case 2:
                [self refreshWithList:SPListDebuts];
                break;
            case 3:
                [self refreshWithList:SPListPopular];
                break;
            default:
                [self refreshWithList:nil];
                break;
        }
        dataHasChanged = NO;
        NSLog(@"Should refresh");
    }
    NSLog(@"%d", [self->shots count]);
    NSLog(@"Collection view: %@",self.collectionView.description);
    NSLog(@"self.list: %@",self.list);
    NSLog(@"List type: %d", listType);
}

这不起作用:/,但当我在MainView中从按钮调用它时,它起作用了。

- (IBAction)changeList:(id)sender {
    [self refreshWithList:SPListDebuts];
}

有谁知道是什么问题吗?

Edit - resolved

获取centerViewController的正确实例

JKViewController *mainController = ((UINavigationController*)self.viewDeckController.centerController).visibleViewController.navigationController.viewControllers[0];

你没有看到你的数据被更新的原因是因为你正在创建一个新的视图控制器并告诉刷新。这个新的视图控制器已经初始化了,但还没有添加到你的视图层次结构中。你要做的是像这样给现有视图控制器发送消息:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    NSLog(@"tap");
    JKViewController *mainViewController = self.viewDeckController.centerViewController;
    mainViewController.dataHasChanged = YES;
    [mainViewController refresh];
    [self.viewDeckController closeLeftViewAnimated:YES];
}

另外,请注意我在修订中更改了变量名。将UIViewController实例命名为appDelegate是非常令人困惑的。

最新更新