【问题标题】:How do you use Interface builder with Swift?你如何在 Swift 中使用 Interface builder?
【发布时间】:2014-07-23 16:23:30
【问题描述】:

将 Swift 代码连接到 Storyboard 时,如何添加 IBActionIBOutlet 标签?

【问题讨论】:

  • 同理,ctrl+拖动类块,然后选择是outlet还是action
  • @CalinChitu:你能详细说明一下吗?我通常把事情从另一个方向联系起来——从 IB 到代码。
  • 是的,从 IB 到代码,和以前一样。只是界面不再存在,因此您将内部类拖到代码中。你必须选择它是一个出口还是一个动作

标签: interface-builder xcode-storyboard swift


【解决方案1】:

IBActionIBOutlet 属性添加到变量和函数,以便它们可以在界面生成器中可见。

class ViewController: UIViewController {

    @IBOutlet var label: UILabel?

    @IBAction func doTap(x:UIButton) {
        println("Tapped: \(x)")
    }
}

【讨论】:

  • 如果您正在开发自己的控件,也可以使用@IBDesignable@IBInspectable。 :)
  • 是的。 Swift 的书也提到了这两个新属性,但我想我们必须等待 NDA 被解除,然后才能更多地谈论它们。
  • 其实我们可以公开讨论这个:oleb.net/blog/2014/06/apple-lifted-beta-nda
  • 我尝试了类似的方法,但无法正常工作。我在 ViewController.swift 的排水沟中看到了出口圈,但不能从它拖动到按钮或从视图中控制拖动到 swift 代码......想知道我做的事情是否明显错误或者这是一个错误某种
  • 我这样做的方式(我确信必须有更好的方式)是:1)在 IB 中选择对象,2)在最右侧的窗格中选择“连接检查器” , 3) 在“新引用插座”下单击圆圈并将其一直拖到 IB 左侧窗格中具有@IBOutlet 的视图控制器。
【解决方案2】:

我更同意Jayprakash,而不是赞成的第一个答案。我唯一要更正的是将 IBOutlets 标记为使用 ! 隐式解包。第一个答案曾经是正确的,但在 Swift 中进行了一些更改,以及它在最新版本中如何与 IB 交互。在 Swift 中,IBOutlets 不再有任何隐含的行为或魔法——它们只是 IB 的注解。截至本回复之日,以下代码正确:

// How to specify an the equivalent of IBOutletCollection in Swift
@IBOutlet var fields: [UITextField]!
// How to specify a standard IBOutlet
@IBOutlet weak var button: UIButton!
// How to specify an IBAction
@IBAction func buttonWasPressed(sender: UIButton) { ... } 

【讨论】:

    【解决方案3】:

    以下代码显示了 Swift 中的 IBOutlet 和 IBAction 格式:

    class MyViewController: UIViewController {
    
      @IBOutlet weak var btnSomeButton: UIButton?
      @IBOutlet weak var lblLabelItem: UILabel?
    
      @IBAction func btnSomeButtonClicked(sender: UIButton) {
        ...
      }
    }
    

    您可以像在 Objective-C 中那样绑定它们。

    【讨论】:

      【解决方案4】:

      在创建项目时,您应该选择故事板,以便您可以直接在故事板中添加您的IBOutlet

      下面的代码让您了解如何将IBOutlet 添加到UILabel

      class ViewController: UIViewController {
      
          @IBOutlet var label : UILabel
      
      }
      

      【讨论】:

      • IBOutlet 具有非可选类型 UIButton
      【解决方案5】:

      只需使用 Xcode5 中流行的旧 ctrl + 拖动技术,一切正常。

      【讨论】:

      • 这对我帮助很大。 +1
      • 如果控制拖动技术不起作用,请确保您将 IB 中的类设置为与您的自定义 swift 视图控制器类的名称相匹配。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-09
      相关资源
      最近更新 更多