Swift 以编程方式设置文本字段的占位符

Posted

技术标签:

【中文标题】Swift 以编程方式设置文本字段的占位符【英文标题】:Swift Setting Textfield's Placeholders Programmatically 【发布时间】:2017-09-16 10:29:08 【问题描述】:

我目前正在尝试弄清楚如何设置文本字段的占位符文本。文本字段位于单元格内。我想分配给占位符的文本包含在一个数组中。

我之前在设置图像时做过类似的事情,看起来像这样

cell?.imageView?.image = row1images[indexPath.row]

所以,使用我认为使用的那种意识形态......

cell?.textField?.text = nil
cell?.textField?.placeholder = row1[indexPath.row]

... 会工作的。但是,我收到错误“‘UITableViewCell’类型的值没有成员‘textField’”

【问题讨论】:

UITableViewCell 没有文本字段,因此出现错误。也许cell 应该声明为您的自定义单元格的实际类型。 您是否创建了自定义单元格?显示cellforrowatindexpath的完整代码。 您有两个选项来设置 TextFiled 占位符:TextField PlaceHolder 【参考方案1】:

试试这个...

如果您在自定义单元格上有一个 textField,则在 cellForRowAt 函数中添加以下代码。

 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 

            let cell = tableView.dequeueReusableCell(withIdentifier: "CustomTableViewCell", for: indexPath) as! CustomTableViewCell

            cell .yourTextField.attributedPlaceholder = NSAttributedString(string: row1[indexPath.row],
                                                                       attributes: [NSForegroundColorAttributeName: UIColor.black])


            return cell
    

【讨论】:

我收到一条错误消息:“使用未声明的类型“CustomTableViewCell”【参考方案2】:

错误 “'UITableViewCell' 类型的值没有成员 'textField'” 说明了一切。要么你使用了一个对你的TextField一无所知的prototype cell,要么你使用了你的custom cell,但没有将它的类更改为你的CustomCellClass。此外,您可能将您的reusable cell 转换为UITableViewCell 而不是您的CustomCellClass

解决这些问题,您的代码就可以了。

【讨论】:

以上是关于Swift 以编程方式设置文本字段的占位符的主要内容,如果未能解决你的问题,请参考以下文章

如何使用swift 2.0更改UITextfield占位符颜色和fontsize?

Swift - 占位符长文本 - 切中间

如何在swift中使用Google Material MDCOutlinedTextField从文本字段中删除占位符文本?

Flyway 以编程方式设置占位符

Swift 字符串和可可绑定:不显示占位符字符串

将占位符文本添加到文本字段时,iOS 7 中的应用程序崩溃