当前位置:  开发笔记 > IOS > 正文

在另一个类中访问RootViewController的数据成员

如何解决《在另一个类中访问RootViewController的数据成员》经验,为你挑选了2个好方法。

我正在使用Objective-C开发一个iPhone应用程序.我想访问另一个类中RootViewController类的NSMutableArray类型的数据成员.我试着让数组静态.但我想要一个非静态数组.我该如何实现这一目标?



1> Alex..:

你需要两件事:

    参考 RootViewController

    从变量中获取变量的方法RootViewController.

RootViewController每个应用程序(最有可能)一个应用程序的情况下,在应用程序的委托中保留对该对象的引用是有意义的.您可以像这样获得应用程序委托:

AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];

在你的应用委托类中,你应该添加一个名为rootViewController暴露你的RootViewController对象的属性.现在你可以写出类似的东西

RootViewController *theRootViewController = appDelegate.rootViewController;

这满足了第一个要求.现在,为了访问视图控制器拥有的对象,您需要添加属性RootViewController.你没有真正说出对象是什么或做了什么,所以让我们来称呼它myMutableArray.创建一个readonly具有该名称的属性RootViewController,现在您将能够编写如下内容:

NSMutableArray *myArray = theRootViewController.myMutableArray;

这将让你做你想做的事.

但是我必须警告你:暴露一个NSMutableArray通常不是一个好主意.原因是如果你改变那个数组的内容,RootViewController就不会知道你已经完成了这个.因此,如果您正在创建一个主 - 详细视图,那么您RootViewController就不会知道您添加了一个新对象.

如果你编写允许RootViewController在内部修改数组的方法会更好.例如,您可以使用一个名为addFooObject:管理数组的方法.然后视图控制器将知道你对它做了什么.对于访问,您可以非常轻松地从属性中返回可变数组的不可变,自动释放的副本.



2> averydev..:

您还可以在一行代码中访问使用SharedApplication的根视图控制器:

[[[UIApplication sharedApplication] keyWindow] rootViewController]

推荐阅读
mobiledu2402851173
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有