我的问题是 iOS 6 选项卡式应用程序。我正在进行的工作有 5 个选项卡,其中几个选项卡是通往其他视图控制器的网关。大多数页面都需要访问模型对象,该对象包含以数组、字符串等形式存储的数据。在运行时填充一个基本模型,用户可以在整个应用程序生命周期中添加它。例如,下面列出的代码来自我的 AppDelegate 文件,它将指向准系统模型的指针传递给项目视图控制器。这很好用:选项卡应用程序使用导航控制器数组堆栈;因为我知道项目页面位于索引 2,所以我可以将模型发送给它。
我的问题与项目页面的子视图有关。例如,作为项目页面的子视图,有(或应该有)用户处理文件操作的 File_IO 页面。File_IO 页面也需要访问 Model 对象。但是当我尝试将模型指针从项目页面发送到 File_IO 页面时,我之前使用的技术(从 AppDelegate 到项目)不起作用。我指向 FileIO ViewController 中的一个空模型。
示例代码:这是在 AppDelegate 中,它工作正常:项目 ViewController 中的准系统模型填充了数据。
//To the Project View Controller...
UINavigationController *project_NavigationController =
[[tabBarController viewControllers] objectAtIndex:2];
Project_ViewController *project_ViewController =
[[project_NavigationController viewControllers] objectAtIndex:0];
//This hides the navigation bar on the project page but it also removes the bar on any subsequent pages! They need to be programmmatically reset in ViewDidLoad.
[project_NavigationController setNavigationBarHidden:YES animated:YES];
project_ViewController.currentGeoModel = newGeoModel;
现在,我的 Project_ViewController 嵌入在 NavigationController 中,并且有 4 个子 ViweController。一个名为 FileIO_ViewController。我想将当前模型从 Project_ViewController 传递给 FileIO_ViewController。在 - (void)viewDidLoad 方法下,我尝试了很多方法,但都不起作用。例如,
UINavigationController *project_NavigationController = (UINavigationController *) self.presentedViewController;
FileIO_ViewController *fileIO_ViewController = [[project_NavigationController viewControllers] objectAtIndex:1];
fileIO_ViewController.currentModel = currentModel;
编译但是当我尝试访问 FileIO_ViewController 方法中的 currentModel 时,它是空的。
如果有人能花时间提供帮助,我将不胜感激。对我来说,最好的答案是显式代码示例的形式,展示如何将指针从 ViewController 传递到像我的模型这样的对象到另一个 ViewController,在该 ViewController 中您不明确知道子 VC 在堆栈中的位置。(在我的示例中,我使用了索引 1,但我实际上不知道 FileIO_ViewController 位于哪个索引,因为我在 Project_ViewController 下还有其他三个 ViewController。我尝试了几个整数但没有成功。)
如果您确实回答了这个问题,请在谈到 iOS 6 和 Objective C 时将我视为一个新人——攀登 Apple 山是一段漫长的旅程,而我还没有达到顶峰!
谢谢
挪威蒂姆雷德菲尔德