【问题标题】:Make tableview with multiple columns制作多列的tableview
【发布时间】:2020-03-18 23:00:10
【问题描述】:

我正在尝试创建类似的东西,其中每一行代表一个工作集,并包含重量和代表次数,用户可以通过按下按钮添加新行。但是我还没有弄清楚如何在tableView中做到这一点。我希望它看起来像这样:

任何提示/想法?

【问题讨论】:

  • 通过覆盖 UITableViewCell 来使用自定义单元格。您可以使用 xib 文件设计您的自定义单元并使用 cellForRowAtIndexPath 填充
  • 对于标题,您可以使用 iOS tableview 部分。但我同意@sammy,这对于 iOS 应用来说不是一个好的布局
  • @Sammy - 我该怎么做?这是它在手机上的样子:lifewire.com/thmb/CmcZhlPeDo8A2j2go761Fscp0kQ=/1050x706/…

标签: ios swift xcode uitableview uicollectionview


【解决方案1】:

有多种方法可以做到这一点。这是我将如何做到的。 为了节省我很多时间,我将跳过一堆步骤并假设您知道如何执行每个特定的设置步骤。

步骤 1:建立一个新的 ViewController 与一个连接的 cocoa touch 类文件。 注意:如果您愿意,可以使用 TableView 控制器 第 2 步:将 tableView 拖入新的视图控制器并相应调整大小(同时添加基本约束)

第 3 步:在 viewController 中添加一个新的 uiView 并将其命名为 header 并将其放置在页面顶部。 注意:还有其他制作标题的方法,例如在 tableview 本身内部。但是我只是更喜欢这样做。

第 4 步:将表格视图和标题作为出口连接到代码。 第 5 步:在新的 cocoa touch swift 文件中创建一个新的自定义单元类。确保像这样设置委托和数据源:

import UIKit

class myCustomCell: UITableViewCell {

}


class test: UIViewController, UITableViewDelegate, UITableViewDataSource {

    @IBOutlet weak var headerVIew: UIView!
    @IBOutlet weak var myTableView: UITableView!

    override func viewDidLoad() {
        super.viewDidLoad()
        self.myTableView.delegate = self
        self.myTableView.dataSource = self
        // Do any additional setup after loading the view.
    }


    /*
    // MARK: - Navigation

    // In a storyboard-based application, you will often want to do a little preparation before navigation
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        // Get the new view controller using segue.destination.
        // Pass the selected object to the new view controller.
    }
    */

}

注意:您也可以 CTRL 从 tableView 拖动到 VIEWCONTROLLER 以手动连接数据源和委托。

第 6 步:通过添加标签并相应地调整它们的大小来创建标题视图。 如您所见,我有点匆忙,它们并没有完全对齐。

Step7:使用属性检查器将单个原型单元格添加到表格视图。根据需要调整单元格大小。并向单元格添加 5 个标签,并将其与您已经创建的标题的大小相匹配。 注意:您需要对标签进行一些自定义,例如提供边框或添加其他图像以创建所需的 BOX 样式。

请注意,我的标签没有完全对齐,尺寸也不完美。 只是想节省一些时间。

第 8 步:这很棘手!您需要在层次结构和身份检查器中选择您的 UITableViewCell,将其自定义类设置为您在文件中命名的任何内容。在我的情况下,它是“myCustomCell”一旦完成,您现在可以通过 CTRL 将每个对象拖到自定义类 TableViewCell 中来连接它们,如步骤 5 中所述。 它应该看起来像这样,

import UIKit

class myCustomCell: UITableViewCell {

    @IBOutlet weak var label1: UILabel!
    @IBOutlet weak var label2: UILabel!
    @IBOutlet weak var label3: UILabel!
    @IBOutlet weak var label4: UILabel!
    @IBOutlet weak var label5: UILabel!

}


class test: UIViewController, UITableViewDelegate, UITableViewDataSource {

    @IBOutlet weak var headerVIew: UIView!
    @IBOutlet weak var myTableView: UITableView!

    override func viewDidLoad() {
        super.viewDidLoad()
        self.myTableView.delegate = self
        self.myTableView.dataSource = self
        // Do any additional setup after loading the view.
    }

最后需要在里面添加协议函数。

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    //set up here
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    //set up here
}

这就是您开始创建此自定义电子表格(如视图)所需的全部内容。 大多数外观和感觉都将带有更多的设计和适当的标签和/或 UIimage 设置。不像我那样匆忙。

希望对你有帮助

【讨论】:

  • 感谢您抽出宝贵时间。只是一个问题:由于我以编程方式完成所有操作,因此也可以这样做吗?或者使用 .xib 进行设计,并在 UIView 中显示 xib?
  • 当然!在 XIB 中设计并在需要时重用它!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-12
  • 1970-01-01
  • 1970-01-01
  • 2016-05-25
  • 2019-06-10
  • 2014-07-02
相关资源
最近更新 更多