gpt4 book ai didi

ios - 为 .xib View 设置 ViewController

转载 作者:行者123 更新时间:2023-11-29 05:49:56 25 4
gpt4 key购买 nike

我既不是 iOS 开发者,也不是 swift 开发者,但请耐心等待:

我目前正在尝试实现一个简单的 iOS 应用程序,但我很难理解应该如何为这些 UIView 设置自定义 UIView 和 ViewController。

我使用的 UIScrollView 包含比图像更复杂的项目,这就是我使用自定义 View 的目的。我所做的是:

  • 我创建了一个 .xib 文件,即 View 本身。我添加了一些元素(为了简单起见,这里只是一个文本字段)。
  • 我创建了一个继承自 UIView 的 cocoa touch 类“CustomView”,并将我的 View 设置为该类(在该类中我只是设置了元素等)。

created the view and the corresponding "CustomView" class

view is now of type "CustomView"

现在我想要一个 ViewController 来控制类的渲染(例如对不断变化的 textField 使用react)。我无法从主 ViewController 管理所有内容,因为它会变得太大(例如 3 个 ScrollView * 5 个需要管理的 subview )。我想要一个为每个 subview 使用 ViewController 的解决方案(以防它们本身也有 subview )。

我该怎么做?

我需要添加某种childViewController吗?

我真的很茫然,大多数博客文章和SO示例根本不起作用和/或已经过时,我不确定我是否弄错了整个View - ViewController模式。

最佳答案

假设您有两个 View Controller :MainViewControllerTableViewController。 TableVC 的主视图是 MainVC 主视图的 subview 。此外,您希望将在 TableVC 中选择的单元格传回 MainVC。

解决方案是 (a) 让 TableVC 成为 MainVC 的子级,(b) 让 MainVC 成为 TableVC 的委托(delegate)。

TableViewController:

protocol TableVCDelegate {
func cellSelected(sender: TableViewController)
}

class TableViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {

// please note that you can do delegation differently,
// this way results in crashes if delegate is nil!

var delegate:TableVCDelegate! = nil
var someValue = ""

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

// set someValue to contents in the selected cell or it's data source

someValue = "Hello World!"
delegate.cellSelected(sender: self)

}
}

MainViewController:

class MainViewController: UIViewController, TableVCDelegate {

let tableVC = TableViewController()

override func viewDidLoad() {

// make tableVC be a child of this VC

addChild(tableVC)
tableVC.didMove(toParent: self)
tableVC.delegate = self

// position tableVC.view

tableVC.view.translatesAutoresizingMaskIntoConstraints = false

}

func cellSelected(sender: TableViewController) {
print(sender.someValue) // this should send "Hello World!" to the console
}
}

这显然是未经测试的代码,但它是基于产品代码的。这是一个帮助您入门的 shell。

关于ios - 为 .xib View 设置 ViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55771872/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com