【问题标题】:Use Subclass of UITableView in UITableViewController在 UITableViewController 中使用 UITableView 的子类
【发布时间】:2016-08-01 15:23:11
【问题描述】:

我正在使用 STCollapseTableView 展开/折叠 tableView 单元格。 我已经通过 cocoapods 集成它并将其导入 Bridging-Header。 在我的 VC 中:

class MyVC: UITableViewController {

  override func viewDidLoad() {
    super.viewDidLoad()
    self.tableView = STCollapseTableView()
  }

}

我已将tableView 指定为STCollapsableTableView。 我遇到了两个问题:

  1. self.tableViewUITableView 类型,而不是 STCollapsableTableView
  2. 我无法调用STCollapsableTableView 中定义的函数,例如- (void)openSection:(NSUInteger)sectionIndex animated:(BOOL)animated; 我认为我必须继承我当前的 VC 才能使用这些,但我真的不知道该怎么做。

我阅读了this 的问题,但这对我没有帮助。我想在MyVC 中用STCollapseTableView 覆盖UITableView,并使用其中定义的所有方法。此外,MyVC 必须是 UITableViewController 的子类,因为存在结构依赖性。请提出一种实现方法。

我正在使用 Swift 2.3

【问题讨论】:

  • 我不会继承 UITableView,而是创建一个实现 UITableViewDataSource 和 UITableViewDelegate 并且知道折叠和其他任务的数据源类。
  • @vikingosegundo 我正在尝试重用一个 gitHub 库。
  • 仅仅因为它在 github 上并不意味着它是一个好方法。
  • @vikingosegundo 同意,但它仍然是一个快速而肮脏的解决方案。不过谢谢你的建议,我会试试的。

标签: ios swift uitableview


【解决方案1】:

您需要覆盖 loadView 方法。查看此处给出的快速示例https://stackoverflow.com/a/32107450/2741745

【讨论】:

    【解决方案2】:

    在情节提要中转到您的 tableViewController,点击 tableViewControllertableView /em> 进入 Identity Inspector 并在 中输入 STCollapseTableView字段。

    在这之后你应该很好。

    【讨论】:

    • 我没有使用故事板。
    【解决方案3】:

    您可以在 MyVC 中使用计算属性:

    private var collapseTableView: STCollapseTableView {
        return tableView as! STCollapseTableView
    }
    

    如果您经常访问它,也可以存储它,以避免多次转换。 其余的都可以:)

    【讨论】:

    • 我收到以下错误:Could not cast value of type 'UITableView' to 'STCollapseTableView'
    • 你能检查STCollapseTableView是否是UITableView的子类吗?它不应该给你这个错误,特别是因为你可以做self.tableView = STCollapseTableView()
    • 是的,它是UITableView的子类
    • 我只是做了同样的事情并且它奏效了,所以你身边肯定有一些不同的东西。您在编译时收到此错误,对吗?在哪条线上?另外,self.tableView = STCollapseTableView() 工作正常吗?
    • 如上声明就可以了。但是一旦我尝试这样做,它就会崩溃:collapseTableView.openSection(sectionToExpand, animated: true),错误为Could not cast value of type 'UITableView' to 'STCollapseTableView'
    猜你喜欢
    • 2010-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-30
    • 1970-01-01
    • 2014-10-22
    相关资源
    最近更新 更多