无法在 Swift 中获取 UITextField 的 .text 属性 - 错误:“实例成员 'textFieldName' 不能用于类型 'ViewController'

Posted

技术标签:

【中文标题】无法在 Swift 中获取 UITextField 的 .text 属性 - 错误:“实例成员 \'textFieldName\' 不能用于类型 \'ViewController\'【英文标题】:Cannot get .text Property of UITextField in Swift -- Error: "Instance member 'textFieldName' cannot be used on type 'ViewController'无法在 Swift 中获取 UITextField 的 .text 属性 - 错误:“实例成员 'textFieldName' 不能用于类型 'ViewController' 【发布时间】:2016-01-23 08:05:41 【问题描述】:

我要做的就是从 main.storyboard 上的 UITextField 对象获取文本输入。两个@IBOutlet 对象都显示它们链接到正确的文本字段对象。但是,当我尝试使常量 meenieOneText 采用 meenieOne UITextField 的 .text 属性的值时,我收到错误消息“实例成员 'meenieOne' 不能用于类型 'ViewController'。

我真的很陌生,所以我可能会做一些完全错误的简单事情,但我对此束手无策,因为它看起来对我来说是正确的。

非常感谢任何帮助。

提前致谢!

import UIKit

class ViewController: UIViewController, UITextFieldDelegate 

    @IBOutlet weak var meenieOne: UITextField!
    @IBOutlet weak var meenieTwo: UITextField!

    let meenieOneText: String = meenieOne.text

【问题讨论】:

【参考方案1】:

试试这个:

var meenieOneText: String = ""

override func viewDidLoad() 
  super.viewDidLoad()
  meenieOneText = meenieOne.text!

您遇到了问题,因为在 ios 中,Storyboard 元素虽然可访问,但在您尝试访问它们的属性时可能尚未初始化(例如,用户看不到它们)。确保元素已初始化的最简单方法是在 viewDidLoad() 之后访问它们。还有其他阶段,例如“viewDidDisappear”等。在此处查看有关 ViewControllers 的 Apple 文档: https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIViewController_Class/

【讨论】:

非常感谢!这一切都有很多细微差别。那么,如果您不介意,我将如何在不使用 viewDidLoad 方法的情况下初始化文本字段? 据我所知,在视图加载之前您无法访问文本字段。只是文本不存在。如果您有一些需要的重要数据,最好将这些数据保存在变量中(例如 let text: String = "I should be in the text field"),然后将其传递给文本字段视图加载。也许您可以详细说明您的情况,以便我们可以获取有关您要实现的目标的更多信息。【参考方案2】:

您不能在课堂上直接使用UITextField 的属性。在任何函数中编写相同的代码。它的工作正常。

【讨论】:

以上是关于无法在 Swift 中获取 UITextField 的 .text 属性 - 错误:“实例成员 'textFieldName' 不能用于类型 'ViewController'的主要内容,如果未能解决你的问题,请参考以下文章

Swift:无法让 UITextField 关闭键盘

Swift——UITextField 没有显示键盘,我无法编辑它

Swift 3:TPKeyboardAvoidingScrollView 在 UITableViewCell 中的一个 UITextField 上无法正常工作

Swift UITextField adjustFontSizeToFitWidth 无法正常运行

我希望禁用两个 uitextfield,因此无法对其进行编辑-SWIFT

使用标识符/标签 (SWIFT) 从 UIView 获取 UITextField