Xcode:从View到Controller的链接操作

时间:2014-11-26 14:44:49

标签: ios swift xcode6

我创建了一个.xib文件,用于包含我在多个页面上显示的模态视图。这个视图正在由FavoritesViewController实例化,而这个视图在按下不同页面上的按钮时会被实例化。

我想为按钮创建一个动作并将其链接到FavoritesViewController。在这种情况下,.xib文件只是一个View,而不是一个View Controller,这是我理解无法完成的原因。

我已尝试将按钮链接到我已创建的动作,但它并不想建立与代码的连接。

如何实现这一目标?

Is this possible?

2 个答案:

答案 0 :(得分:0)

您的操作必须在FavoriteView.swift文件中设置,而不是在ViewController文件中设置!

答案 1 :(得分:0)

我现在通过使用代表来解决它,正如BenjG37和bpolat所建议的那样。谢谢!

我的FavoritesView.xibFavoritesView.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!")
  }
}