首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用户与textfield快速4交互的最佳方式

用户与textfield快速4交互的最佳方式
EN

Stack Overflow用户
提问于 2019-05-23 00:45:41
回答 3查看 152关注 0票数 0

当我正在构建一种表单时,用户将能够通过文本字段输入信息。

我想知道是否有一种简单的方法可以让这个表单更具交互性,让它可以滚动。

我知道有些人使用滚动视图,但是使用Collection视图或表视图并在单元格中插入textfields也是一种常见的做法吗?怎么做?

你个人使用哪种方式?如何使用?

(请注意,我所有这些都是以编程方式完成的,而不使用接口生成器)

下面是我想要构建的表单的截图:

我想要建立的表格

谢谢

EN

回答 3

Stack Overflow用户

发布于 2019-05-23 01:49:26

I强烈建议使用 尤里卡,您可以在几分钟内完成Swift精心编制的表单.

创建窗体

  1. Import Eureka
  2. 创建从UIViewController继承的新FormViewController
  3. ..。开始在ViewDidLoad中添加行 导入Eureka类MyFormViewController: FormViewController { override (){ super.viewDidLoad() form +++节(“Section1”) <<< TextRow(){ row in row.title = "Text Row“row.placeholder =”输入text here“}} <<< PhoneRow(){ $0.title = "Phone Row”$0.占位符=“和数字在这里”} +++节(“Section2”) <<< DateRow(){ $0.title = "Date Row“$0.value = Date(timeIntervalSinceReferenceDate: 0) }}

您可以找到更多关于github的信息。创建自定义单元格或重写Eureka单元格样式也是可能的。

票数 0
EN

Stack Overflow用户

发布于 2019-05-23 04:44:43

IQKeyboardManager是我在每个项目中使用的最好的解决方案,我强烈建议您使用简单而准确的解决方案。

票数 0
EN

Stack Overflow用户

发布于 2019-05-23 06:12:44

不要使用第三方库,而是尝试使用Apple已经提供的API。

可以有多种解决方案,

  1. 使用UIScrollViewUIStackView的组合。在这种情况下,您需要手动创建所有表单字段的UI (即使UI完全相同)。
  2. 使用UITableView可以使用单个UI创建任意数量的字段。

您要创建的表单包含3个具有相同UI的字段--只有文本不同。

由于UITableView工作在reusability的概念上,而且我们的表单包含相同类型的内容,所以我们肯定可以使用UITableView。即使表单也包含其他内容类型,在这种情况下,tableView也是一个不错的选择。

1.首先创建一个enum - FormField,它将表示表单中单个字段的类型。

代码语言:javascript
复制
enum FormField {
    case websiteName
    case websiteLink
    case password

    var title: String? {
        var str: String?
        switch self {
        case .websiteName:
            str = "Website's name"
        case .websiteLink:
            str = "Link"
        case .password:
            str = "Password"
        }
        return str
    }

    var placeholder: String? {
        var str: String?
        switch self {
        case .websiteName:
            str = "ex: \"Facebook\""
        case .websiteLink:
            str = "ex: \"www.facebook.com\""
        case .password:
            str = "current password"
        }
        return str
    }
}

我们将使用这个enum来填充我们的自定义UITableViewCell。您可以根据需要添加更多字段类型。

2.创建自定义UITableViewCell

代码语言:javascript
复制
class CustomCell: UITableViewCell {
    @IBOutlet weak var label: UILabel!
    @IBOutlet weak var textField: UITextField!

    func configure(with field: FormField) {
        self.label.text = field.title
        self.textField.placeholder = field.placeholder
    }
}

3.使ViewControllerUITableViewDataSource相一致并实现了这些方法

代码语言:javascript
复制
class ViewController: UIViewController, UITableViewDataSource {
    let formFields: [FormField] = [.websiteName, .websiteLink, .password]

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return self.formFields.count
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! CustomCell
        cell.configure(with: self.formFields[indexPath.row])
        return cell
    }
}

在上面的代码中,我们创建了一个formFields数组,我们将使用它作为dataSourcetableView。根据您的要求添加更多内容。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56266712

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档