gpt4 book ai didi

ios - 以编程方式生成不同的静态 UITableview

转载 作者:行者123 更新时间:2023-11-30 14:17:18 24 4
gpt4 key购买 nike

我刚刚加入 StackOverflow,正在努力满足我正在快速开发的 iPhone 应用程序的编程要求。我有一个不同计算器的表格 View 列表,当单击某个项目时,我想转到另一个 UITableView ,然后对该工具进行详细计算。

我可能在第一个表(>20)中有很多工具,所以我不想使用 Storyboard 来绘制每个新的UITableView静态表,每个表都有不同的segue一个。

我想知道是否有人可以给我一些建议,告诉我如何在单击某个项目时以编程方式编写带有静态单元格的新 UITableViewController 的演示文稿。我不想使用 Storyboard ,因此我需要使用代码来管理演示文稿以及使用静态单元格生成下一个 UITableViewController

我已经能够以编程方式使用自定义类对静态表格 View 进行编程,并链接到 Storyboard UITableViewController 项,但我想以编程方式完成所有这些操作并将 Storyboard全部剪切出来。

如果您能提供任何建议,我们将不胜感激。

谢谢。

最佳答案

UITableViewController 抽象了一些东西。看起来也许您想要做的是将事物分开并进行更精细的控制。

您可以相当轻松地做到这一点。您需要做三件事才能实现这一目标:

  • UITableView
  • UITableViewDataSource
  • UITableViewDelegate

UITableViewController 将这些全部为您组合在一起。我们必须自己创建它们。

为此,我们创建一个 View Controller ,并继承 UITableViewDataSourceUITableViewDelegate

class Example: UIViewController {


}

// MARK - UITableViewDataSource
extension Example: UITableViewDataSource {
// We need to implement some methods here
}

// MARK - UITableViewDelegate
extension Example: UITableViewDelegate {

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
// Handle the user clicking an item here
}

}

剩下三件事要做:

  • 创建并显示表格
  • 获取要在表格中显示的数据
  • 实现委托(delegate)方法

 创建表格

您应该决定是否要完全以编程方式创建 UITableView,还是让 Interface Builder 在 .xib 中为您布局一个 UITableView,然后只需通过 IBOutlet 将其链接起来。

假设您想要执行前者,您可以执行以下操作:

var table: UITableView?

override func viewDidLoad() {
super.viewDidLoad()
table = UITableView(frame: view.bounds)
view.addSubview(table!)
table?.delegate = self
table?.dataSource = self
}

 获取数据

当您从之前的 View Controller 推送此 View Controller 时,请务必使用您的数据在此 View Controller 上设置一个变量。假设您有一个数组,它就像这样简单:

exampleViewController.myData = someArray;
navigationController?.pushViewController(exampleViewController, animated: true)

(请务必在 View Controller 中创建 myData 变量以获取此值)

实现委托(delegate)方法

现在我们可以实现委托(delegate)方法来显示数据。您可能已经熟悉这一点,但为了完整起见:

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

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
// You should really use dequeueReusableCellWithIdentifier here.
var cell = UITableViewCell()
cell.textLabel!.text = myData[indexPath.row]
return cell
}

关于ios - 以编程方式生成不同的静态 UITableview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30967120/

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