译自:
为对象创建 Outlet 是比较费时费力的一件事情。多个对象共享相同的 Outlet 也是可能的。在本教程中我们将会根据按钮的 tag 值来创建多个 Outlet。本教程使用 Xcode 7.2 作为开发工具,使用 Swift 2.1 和 iOS 9 进行构建。
打开 Xcode 并创建一个新的 Single View Application。Product Name 项填写 IOS9MultipleOutletsTutorial,然后用你自己惯用的方式填写 Organization Name 和 Organization Identifier。Language 项选择 Swift,并且确保 Devices 项选择并且只选择了 iPhone。
打开 StoryBoard 并且从 Object Library 拖一个按钮到主视图的左上方。打开 Attribute Inspector(属性检查器)并将 View 中的 Tag 设为 10。
复制此按钮,并将复制得到的按钮放置于主视图的右上角,在第一个按钮的旁边,该按钮将和第一个按钮具有相同的标签值。 接下来,从 Object Library 中拖出另一个按钮到主视图中,将该按钮放在左上角按钮的下面。选中这个按钮并且打开 Attribute Inspector,将 View 中的 Tag 设为 20。然后再次复制刚添加的这个按钮并将复制得到的按钮放在刚添加的按钮的右方。到这里 Storyboard 应该是如下图所示的样子:
选中主视图然后点击 Interface Builder 右下角的 Resolve Auto Layout Issues 按钮。选择 All Views 中的 Reset to Suggested Constraint 这一选项。
打开 ViewController.swift 文件并将 viewDidLoad 方法改为如下代码块所示:
override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. for subview in view.subviews where subview.tag == 10 { let button = subview as! UIButton button.addTarget(self, action: "changeColorRed:", forControlEvents: .TouchUpInside) } for subview in view.subviews where subview.tag == 20 { let button = subview as! UIButton button.addTarget(self, action: "changeColorGreen:", forControlEvents: .TouchUpInside) }}复制代码
这里的 subview 属性可以用于遍历主视图的子视图。每个按钮都根据 tag 值的不同添加了一个相应的 target。接下来,实现 target 方法:
func changeColorRed(sender: AnyObject) { let button: UIButton = sender as! UIButton button.tintColor = UIColor.redColor()} func changeColorGreen(sender: AnyObject) { let button: UIButton = sender as! UIButton button.tintColor = UIColor.greenColor()}复制代码
当按钮被选中时按钮的颜色会改变。__构建然后运行__项目,接下来点击按钮来更改颜色。
你可以从 ioscreator 的 仓库下载 IOS9MultipleOutletsTutorial 的源代码。
如有任何知识产权、版权问题或理论错误,还请指正。
https://juejin.im/post/5a3215a2f265da431a43358b 转载请注明原作者及以上信息。