我创建了一个.xib
文件,用于包含我在多个页面上显示的模态视图。这个视图正在由FavoritesViewController
实例化,而这个视图在按下不同页面上的按钮时会被实例化。
我想为按钮创建一个动作并将其链接到FavoritesViewController。在这种情况下,.xib文件只是一个View,而不是一个View Controller,这是我理解无法完成的原因。
我已尝试将按钮链接到我已创建的动作,但它并不想建立与代码的连接。
如何实现这一目标?
答案 0 :(得分:0)
您的操作必须在FavoriteView.swift文件中设置,而不是在ViewController文件中设置!
答案 1 :(得分:0)
我现在通过使用代表来解决它,正如BenjG37和bpolat所建议的那样。谢谢!
我的FavoritesView.xib
与FavoritesView.swift
相关联。它包含视图的代码并定义委托的协议。我已将关闭 - 按钮的操作与视图相关联,并调用委托的exitFromBlur
方法。
// FavoritesView.swift
protocol FavoritesViewDelegate {
func exitFromBlur()
}
class FavoritesView: UIView {
var delegate: FavoritesViewDelegate?
@IBAction func exitBlur(sender: AnyObject) {
delegate?.exitFromBlur()
}
}
这是视图控制器,当单击按钮时,它会被我的故事板的任何其他视图实例化。我现在实现协议及其方法exitFromBlur
。它还告诉观点它现在是它的代表。
// FavoritesViewController.swift
class FavoritesViewController: UIViewController, FavoritesViewDelegate {
override func viewDidLoad() {
super.viewDidLoad()
let subView = UINib(nibName: "FavoritesView", bundle: nil).instantiateWithOwner(self, options: nil)[0] as FavoritesView
subView.delegate = self
}
func exitFromBlur() {
println("It works!")
}
}