需要帮助创建复杂的 UIView - Swift xCode [关闭]

Posted

技术标签:

【中文标题】需要帮助创建复杂的 UIView - Swift xCode [关闭]【英文标题】:Need help creating a complicated UIView - Swift xCode [closed] 【发布时间】: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áľ 只需添加其他类的子视图项目? 【参考方案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áľ

以上是关于需要帮助创建复杂的 UIView - Swift xCode [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Swift - 使用 UiView 的 iCarousal

在 Swift 中从 UIView 创建 PDF

Swift - 添加UIView后无法点击按钮

Swift:如何将 MapView 放入 UIView(?)

如何移动 UIView 并使用 Swift 以编程方式放置新的 UIView?

如何在 Swift 中以编程方式从 UIView 中删除安全区域?