ios - 声明 IBOutlet 时使用类型别名

标签 ios swift iboutlet

出于教学目的,我希望能够在学生的第一个任务中隐藏 optional 的复杂性(我将在接下来的类(class)中对此进行解释)。但是,我也希望他们使用界面并连接函数和变量。

我想做的是:

typealias TextField = UITextField!

然后我想做的是:

@IBOutlet var newShipCaptainName: TextField

这只是部分工作。我可以在 Storyboard中看到它,如果我拖动一个 UITextField 并将其类更改为 Textfield,我可以毫无问题地连接它。

但是,编译失败并出现错误:

ViewController 类没有初始化器

我明白了。编译器认为 TextField 是一个非可选变量,它不能是 IBOutlet。然而,TextField 是一个 UITextfield!,所以我不确定我做错了什么。

有什么想法吗?

最佳答案

显然,隐式解包可选的类型别名被视为非可选,因此您必须显式添加感叹号:

@IBOutlet var newShipCaptainName: TextField!

关于ios - 声明 IBOutlet 时使用类型别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41994958/

相关文章:

iOS:Xcode 6 中的 IBOutlet 为零

ios - UIImagePickerController 实时照片

ios - 使用 NSURLSession 的 SFTP 不工作

ios - 为什么我的 superview-with-subview 在模态呈现时会缩小(使用自动布局)?

ios - 在 Swift 2.2.1 中替换 c 风格的 for-loop

TouchUpInside 上的 Swift addTarget 错误

swift - 如何在 Swift 中隐藏操作按钮?

iOS IBOutlet 非零,不知何故被清除为零

ios - 苹果 watch : contexts not sending between view controllers

iOS如何在首页隐藏nagationBar,其他viewcontroller显示navgationBar