2009-09-04 68 views

回答

1

很多时候,当我发现我必须做这样的事情时,我发现我可以重新设计解决方案,并且它的需求消失。杰伊的法则:“如果太难了,你可能做错了。”

0

您将不得不在视图控制器界面中定义属性,然后只要您有第二个视图控制器中的视图控制器的引用,您应该可以像UILabel的文本那样访问它。

+0

谢谢丹尼尔。你的意思是什么?我如何将第一个视图控制器的引用传递给第二个控制器?顺便说一句,我使用pushViewController去下一个视图控制器。 – domlao 2009-09-04 15:40:51

1

可以访问另一个视图控制器的UILabel,但不可以。它会导致你很难理解错误。当内存不足时,任何IBOutlet都可能在令人惊讶的时候变为零。你不应该直接混淆另一个对象的UI元素。

访问数据(模型)对象的初始想法是正确的,但通常情况下,您最好使用相同的模型对象初始化两个视图控制器。例如,假设你有一个状态消息,你想在两个不同的视图控制器中显示两个不同的UILabel。而不是让一个视图控制器询问另一个视图控制器的数据,最好是有一个像两个视图都有指针的“状态”模型类。每当它发生变化时,他们都会改变他们的UILabel。

更好的办法是发布一个通知(StatusDidChangeNotification),让所有关心它的人观察它并适当地更新它们的UI。

你想保持UI元素非常松散地耦合在Cocoa中。否则,当你做出看起来像是一个小UI变化的时候,你会发现难以修复的错误。

0

viewWillAppear:只有当您使用像presentModalViewController:animated:或pushViewController:animated:这样的内置视图控制器转换时才被框架调用。在其他情况下,你必须调用viewWill/Did(Dis)出现:你自己。

相关问题