ios - 我如何快速更新其他 Controller 的用户界面?

标签 ios iphone swift

我的应用程序中有多个 Controller 。当我的应用程序调用一个 Controller 中的一个函数时,我想更新其他 Controller 的 UI。我怎样才能做到这一点?

class FirstViewController: UIViewController {
    func updateUI {...}  
}

class SecondViewController: UIViewController {
    func updateUI {...}  
}

class ThirdViewController: UIViewController{
    func updateAllUI {...} # I want call FirstViewController().updateUI() and SecondViewController().updateUI() here
}

但 FirstViewController() 意味着我创建了一个我不想要的新 FirstViewController,并且 FirstViewController 已经创建。那么我如何在 updateAllUI() 中调用所有其他 Controller 的 updateUI()

请帮忙,谢谢!

最佳答案

让 View Controller 直接通信通常是一种非常糟糕的做法。我会使用 NSNotification 在 View Controller 之间进行通信。通知名称以大写字母开头并以“通知”一词结尾是惯例。

class FirstViewController: UIViewController {
    func updateUI {...}  

    override func viewDidLoad() {
        super.viewDidLoad()
        NSNotificationCenter.defaultCenter().addObserver(self, selector: "updateUI", name:"TimeToUpdateTheUINotificaiton", object: nil)
    }

    override deinit {
        NSNotificationCenter.defaultCenter().removeObserver(self)
}
}

class SecondViewController: UIViewController {
    func updateUI {...}  

    override func viewDidLoad() {
        super.viewDidLoad()
        NSNotificationCenter.defaultCenter().addObserver(self, selector: "updateUI", name:"TimeToUpdateTheUINotificaiton", object: nil)
    }

    override deinit {
        NSNotificationCenter.defaultCenter().removeObserver(self)
    }
}



class ThirdViewController: UIViewController{

    func updateAllUI {
        NSNotificationCenter.defaultCenter().postNotificationName("TimeToUpdateTheUINotificaiton", object: nil)
    }
}

关于ios - 我如何快速更新其他 Controller 的用户界面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31259028/

相关文章:

ios - 为什么我可以将NSNumber放在NSString中而不得到异常?

ios - 没有登录的谷歌共享不起作用

iphone - 我可以在应用商店上为我的应用更改 'what'的“新内容”部分吗?

ios - 带有 UICollectionView 的 UITableViewCells 低性能(Swift)

swift - iOS8:viewDidLayoutSubviews()隐藏 Storyboard自动布局中的元素

ios - 静音时播放iOS声音

ios - 如何在 iOS 中触发 didReceiveRemoteNotification?

iphone - CAShapeLayer LineCap 在 CABasic 动画结束时不正确

iphone - PhoneGap 地理定位在 iPhone 上请求两次许可

swift - "_"不可转换为 Int32 - Swift