可可触摸UIViewController的性能和一流的设计(Cocoa Touch UIViewCo

2019-10-17 02:32发布

我创建一个自定义视图控制器。 这个VC需要加载在创建它并将其推到NavigationController的,这将是部分顶部的事件已知的一些数据。

我的问题是,我应该怎么从处理自定义视图控制器的创建成自定义视图控制器视图传递数据。

我想过四个可能的选项,我希望得到的,为什么每一个是好还是不好这个功能提供意见。

1)暴露在自定义的ViewController公共属性和设置在基于那些特性的视图的用户界面元素 - (无效)viewDidLoad中。

2)暴露实际UI元素本身和设置它们的.text /图像配/作为正在创建的ViewController .whatever属性。

3)创建自定义视图定制构造,并在值传递我需要设置的UI元素

4)创建两个视图可以访问自定义模型,创建/推前CustomView设置数据,并访问,在viewDidLoad中的事件数据。

我还是新的这一切,我想确保我理解这些数据切换的妥善处理。 看起来像这可能是一个简单的答案,但我还是有点迷茫,它可能是非常重要的这样做的权利,以避免记忆丧失/泄漏。

此外,如果有人关心,我使用的iTunes U和马克斯坦福大学的CS193p类/拉马什的“从iPhone发展”教自己的iPhone可可。 我正在用NavigationController和一对夫妇ViewControllers(1存在,如果你熟悉193P)的应用程序。

Answer 1:

好吧,我相信有优点和缺点每个根据您的要求的方法......经常会需要一些方法相结合。 我认为最常见的,对我反正就是做这样的事情,你给它足够的上手。

MyViewController *vc = [[MyViewController alloc] init]; // (or initWithNibName:bundle:)
// transfer vc values here
vc.value1 = aValue;
vc.value2 = anotherValue;
[self.navigationController pushViewController:vc animated:YES];
[vc release];

您的视图控制器被实例化后,你有机会的对象传递给它。 说MyViewController是详细信息视图,然后你给它,它就会显示在细节的对象。 或者,如果它是一个表视图,你可以给它的NSArray它需要显示。 然后在viewDidLoad中或awakeFromNib或awakeFromCoder,或者......你可以填写看法......可以这么说。



Answer 2:

#1是好的,带或不带#3(这两个不是相互排斥的)

#4是我的首选方案。 举例来说,如果我有一个UserViewController,我可能还要有一个用户对象,并创建这样说:

User *user = [self.users objectAtIndex:someIndex];
UserViewController *uvc = [[[UserViewController alloc] initWithUser:user] autorelease];

#2是不是一个好主意。 对象不应该访问其他对象的用户界面元素。 比较麻烦源于此,当你决定改变你的UI左右时(你)。



文章来源: Cocoa Touch UIViewController Properties and class design