【问题标题】:Need help creating a complicated UIView - Swift xCode [closed]需要帮助创建复杂的 UIView - Swift xCode [关闭]
【发布时间】:2018-01-25 07:54:22
【问题描述】:

我需要一些帮助来创建一个复杂的 UIView。在视图中,我有一个 UITextField 和一个标签。这些工作正常。在此之下,我想向我的视图添加一个视图,它是一个 UITableView。我想在这个 UITableView 中使用与在另一个 UITableViewController 中相同的数据。这是我的视图代码:

override init(frame: CGRect) {
    super.init(frame: frame)
    setupViews()
}

required init?(coder aDecoder: NSCoder) {
    fatalError("init(coder:) has not been implemented")
}

func setupViews() {

    //Setup View
    self.backgroundColor = .white

    //Add Subviews
    self.addSubview(textField)
    self.addSubview(nameLabel)

    //Add Constraints
    //Add Constraints
    addConstraintsWithFormat(format: "H:|-16-[v0]-16-|", views: textField)

    addConstraintsWithFormat(format: "V:|-150-[v0(75)]|", views: textField)


    nameLabel.leadingAnchor.constraint(equalTo: textField.leadingAnchor, constant: 3).isActive = true
    nameLabel.bottomAnchor.constraint(equalTo: textField.topAnchor, constant: -3).isActive = true

}


//Add Items
let textField: UITextField = {
    let textField = UITextField(frame: CGRect(x: 0, y: 0, width: 300, height: 40))
    textField.placeholder = "List Name"
    textField.font = UIFont.systemFont(ofSize: 27) // Make relative to height!!
    textField.borderStyle = UITextBorderStyle.roundedRect
    textField.keyboardType = UIKeyboardType.default
    textField.returnKeyType = UIReturnKeyType.done //Sets Return Key text to "Done"
    textField.clearButtonMode = UITextFieldViewMode.whileEditing
    textField.contentVerticalAlignment = UIControlContentVerticalAlignment.center
    textField.translatesAutoresizingMaskIntoConstraints = false
    return textField
}()

let nameLabel: UILabel = {
    let label = UILabel()
    label.text = "NAME"
    label.font = UIFont(name: "HelveticaNeue-Bold", size: 12)
    label.translatesAutoresizingMaskIntoConstraints = false
    return label
}()

提前致谢!

【问题讨论】:

  • 你遇到了什么问题?
  • @rollstuhlfahrer 我不知道如何在这个视图类中添加一个 TableViewController 作为视图。
  • 与添加标签和文本字段的方式相同
  • @MilanNosáľ 只需添加其他类的子视图项目?

标签: ios xcode uitableview uiview swift4


【解决方案1】:

就这么简单:

let tableView = UITableView()
// keep the reference to data source
let tableViewDataSource = CustomDataSource()

func setupViews() {
    self.addSubview(tableView)

    // constraints to define its size and position (remember that unlike UILabel and UITextField, UITableView does not have intrinsic content size)
}

let tableView: UITableView = {
    let tableView = UITableView()
    // setup data source
    tableView.dataSource = tableViewDataSource
    // other configuration
    return tableView
}()

关于 tableView 数据源,您基本上需要实现您在要与之共享表的 TableViewController 中已经执行的相同方法。

class CustomDataSource: NSObject, UITableViewDataSource {
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        // code from tableViewController
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        // code from tableViewController
    }
}

【讨论】:

  • 谢谢!我似乎无法从其他类中获取数据以加载到此处的 tableView 中。 tableView 显示但它是空的。 @MilanNosáľ
  • @NikolasIoannou 您需要实现一个数据源并将其设置为表格视图
  • 如何实现数据源以及在哪个类中。感谢您的快速响应
  • 稍后再写
  • 好的,我试试看。谢谢你的协助! @MilanNosáľ
猜你喜欢
  • 2013-10-28
  • 2021-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-13
  • 2021-06-29
  • 2010-12-10
  • 1970-01-01
相关资源
最近更新 更多