不能在主视图控制器和弹出窗口视图之间传递消息



我似乎无法在我的主视图控制器和显示在弹出窗口视图(iPad)中的表视图控制器之间进行任何形式的通信。

我用通常的方式在导航控制器中设置表格视图:

// create popover
    if (self.popoverController == nil) {
    filesViewController = [[[MyTableViewController alloc] initWithFiles:fileList] autorelease];
    UINavigationController *navCtrl = [[[UINavigationController alloc] initWithRootViewController:filesViewController] autorelease];
    self.popoverController = [[UIPopoverController alloc] initWithContentViewController:navCtrl];
        self.popoverController.delegate = self;
        // resize popover
        self.popoverController.popoverContentSize = CGSizeMake(320.0, 44 + [fileList count] * 44);
    }

一切都很好,我正在传递一个文件名数组(fileList)到表视图,它在表视图中作为一个名为listOfFiles的数组保存。表格视图显示文件名,当一个被用户选中时,我想把那个文件名传递回主视图控制器。然而,我不能从表视图的didSelectRowAtIndexPath方法到主VC得到任何通信。我已经尝试了各种各样的出口在不同的方向,我已经尝试创建一个新的对象在didSelectRowAtIndexPath来处理来自表视图的文件名。我可以将文件名传递给新对象,但是当我试图将其发送到主VC中时,它再次为空。当弹出窗口处于活动状态时,我发送给主VC的所有内容都会显示为空。

    - (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController {
    NSLog(@"%@", handler.addressForImageFile);
    self.popoverController = nil;
    [self.popoverController release];
}

是否有一些原因,为什么我的主要VC不会得到任何东西,但从我的表视图空对象?我花了几天时间尝试了很多不同的东西。我觉得我在弹窗的工作原理上有一些基本的知识差距。当然有一个简单的方法来发送一个字符串回到我的主VC时,它是从表视图中选择的?

非常感谢你的帮助!

可能有更好的方法来做到这一点,但根据传递字符串的目标,一种方法可能是使用NSUserDefaults

最新更新