我是IOS和Swift环境的新手(我不想知道OBJ-C)。我试图理解一个概念,但无法找到任何代码示例 在工作中看到这个概念。而且我不知道如何去做。
据我所知,View是一个通用组件。
由于View是一个通用组件,因此可以由一个或多个ViewControllers访问。
视图使用协议公开其功能。
示例:
我们有2个ViewControllers:
ViewControllerOne
ViewControllerTwo
我们有1个视图
ViewGeneric
在这里,ViewGeneric是一个通用组件,并公开其三个功能,
更改背景颜色
更改标签文字
更改文字的字体颜色
现在我希望ViewControllerOne
能够使用该功能更改视图背景的颜色和
ViewControllerTwo
使用该功能更改文本的标签文本和字体颜色。显然是一次一个。
就像我在这里重用ViewGeneric一样。
请在Swift中提供一个小的工作示例代码....如果有人能帮助我理解如何去做,我将非常感激。
答案 0 :(得分:1)
有很多方法可以做你想要的,但这是你所要求的简单方法。首先创建新的自定义UIView:
import UIKit
class MyGenericView: UIView {
var myLabel: UILabel!
override init(frame: CGRect) {
super.init(frame: frame)
self.myLabel = UILabel()
// e.g.
self.myLabel.frame = CGRectMake(0, 0, self.frame.size.width, 20)
addSubview(myLabel)
}
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
}
然后您可以在不同的视图控制器中使用此视图:
import UIKit
class ViewController1: UIViewController {
var myGenericView: MyGenericView!
override func viewDidLoad() {
super.viewDidLoad()
myGenericView = MyGenericView(frame: CGRectMake(0, 0, 100, 100))
myGenericView.backgroundColor = UIColor.redColor()
myGenericView.myLabel.text = "ViewController1 text"
self.view.addSubview(myGenericView)
}
}
另一个视图控制器中的相同视图:
import UIKit
class ViewController2: UIViewController {
var myGenericView: MyGenericView!
override func viewDidLoad() {
super.viewDidLoad()
myGenericView = MyGenericView(frame: CGRectMake(0, 0, 100, 100))
myGenericView.backgroundColor = UIColor.whiteColor()
myGenericView.myLabel.textColor = UIColor.blackColor()
myGenericView.myLabel.text = "ViewController2 text"
self.view.addSubview(myGenericView)
}
}
在这种情况下,理解的重要是“addSubview”方法,该方法采用UIView并将其添加为当前视图的“子视图”(或子视图)。这将创建一个具有父子关系的视图层次结构,这意味着 - 如果父项移动,则子项随父项移动。