如何在 Swift 中的 "model" 组件中设置委托视图控制器 class
How to set a delegate view controller class in a "model" component in Swift
我在 Swift 中有一个视图控制器 class,其中视图是一个单独的 class,我通过插座将其连接到视图控制器。这允许我在 didset
方法中将视图控制器 class 设置为视图的委托:
@IBOutlet theView: ViewClass! {
didSet {
theView.delegate = self;
}
}
但我也尝试将我的大部分应用程序后端逻辑分离到一个单独的 class(MVC 中的模型),我在我的视图控制器中创建它,如下所示:
let logic = Logic()
但是我没有好的方法让 Logic
做一些后台工作并通知我的视图控制器。同样,我想将视图控制器作为委托 class 传递给 Logic
。最好的地方在哪里?如果我尝试在 MyViewController 中执行此操作,我会收到一个奇怪的 "invalid argument type list" 错误:
let logic = Logic(self)
大概是因为 self
的初始化顺序? place/best 正确的做法是什么?
我建议你看看斯坦福大学的这门课程,看看 MVC 讲座:https://itunes.apple.com/gb/course/developing-ios-8-apps-swift/id961180099
他们建议使用 NSNotifcation
s 让您的控制器知道模型中的更改,并且仅使用委托来通知视图中的更改。看看这个以了解有关 NSNotifcation
的更多信息:http://www.andrewcbancroft.com/2014/10/08/fundamentals-of-nsnotificationcenter-in-swift/
我在 Swift 中有一个视图控制器 class,其中视图是一个单独的 class,我通过插座将其连接到视图控制器。这允许我在 didset
方法中将视图控制器 class 设置为视图的委托:
@IBOutlet theView: ViewClass! {
didSet {
theView.delegate = self;
}
}
但我也尝试将我的大部分应用程序后端逻辑分离到一个单独的 class(MVC 中的模型),我在我的视图控制器中创建它,如下所示:
let logic = Logic()
但是我没有好的方法让 Logic
做一些后台工作并通知我的视图控制器。同样,我想将视图控制器作为委托 class 传递给 Logic
。最好的地方在哪里?如果我尝试在 MyViewController 中执行此操作,我会收到一个奇怪的 "invalid argument type list" 错误:
let logic = Logic(self)
大概是因为 self
的初始化顺序? place/best 正确的做法是什么?
我建议你看看斯坦福大学的这门课程,看看 MVC 讲座:https://itunes.apple.com/gb/course/developing-ios-8-apps-swift/id961180099
他们建议使用 NSNotifcation
s 让您的控制器知道模型中的更改,并且仅使用委托来通知视图中的更改。看看这个以了解有关 NSNotifcation
的更多信息:http://www.andrewcbancroft.com/2014/10/08/fundamentals-of-nsnotificationcenter-in-swift/