【问题标题】:Update view under a modal view form sheet在模态视图表单下更新视图
【发布时间】:2012-01-20 15:22:48
【问题描述】:

所以,我有一个带有按钮的视图。我点击此按钮并出现样式为“表单”的模式视图。在那里我进行了更改,因此必须更改我们第一个带有按钮的视图(现在位于模态视图后面)的背景颜色。问题是,如何做到这一点?

【问题讨论】:

    标签: ios ipad uimodalpresentationstyle


    【解决方案1】:

    底层页面的视图控制器仍然存在,并且仍然可以在其视图上执行代码。视图可能会被卸载,因为它不在屏幕上,但 viewcontroller.view 是一个惰性构造器,因此在其上设置属性将导致它被重新创建。

    诀窍在于如何与底层视图控制器进行通信。处理跨视图控制器通信的一个好方法是使用 NSNotificationCenter 发布 NSNotification。

    设置您的背景视图控制器以观察名为“BackgroundColorChangedNotification”之类的通知,然后从您的模态表单视图控制器发布具有该名称的通知。

    这种方法的优点是,如果应用程序中的任何其他控制器需要了解此更改,它们都可以只注册通知,并且这些控制器都不需要了解彼此的任何信息,因此您的代码是很好地解耦。

    【讨论】:

    • 感谢您的详尽回答。它有帮助。我已经为自己打开了 NSNotifications :)
    【解决方案2】:

    Self.view.parentView 会让你访问第一个视图

    然后您可以使用 setBackgrouncolor 方法更改其背景

    【讨论】:

    • 没有 parentView 属性,但是 self.parentViewController。我的 parentViewController 是 UINavigationController。
    • 是的..它可以是 parentViewController.. 实际上我在我的 iPhone 上,这段代码我主要使用 xcode 的自动完成功能,所以这就是代码错误的原因
    • Apple 改变了 parentViewController 属性在 iOS4 和 iOS5 之间的工作方式 - 我会谨慎使用这种方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多