gpt4 book ai didi

ios - 如何访问容器中各部分的行?

转载 作者:行者123 更新时间:2023-12-01 16:12:28 25 4
gpt4 key购买 nike

我以编程方式创建了一个包含两个部分(4 + 2 行)的侧边菜单。
我的主 Controller 是 UIViewController .为了在我的 View Controller 中创建一个包含不同部分的分组 TableView ,我必须在其中放置一个容器 View ,并将 TableView 嵌入到我的其他 VC 中。

为了访问我在不同部分的行,我首先创建了一个枚举:

enum MenuType: Int, CaseIterable {

case a, b, c, d
case e, f

var section: Int {
switch self {
case .a, .b, .c, .d : return 0
case .e, .f: return 1
}
}

var row: Int? {
switch self.section {
case 0: return self.rawValue
case 1: return self.rawValue - MenuType.allCases.filter{ $0.section < self.section }.count
default: return nil
}
}
}

调用 菜单类型 在我的 主VC
var didTapMenuType: ((MenuType) -> Void)?

要选择具有相应行的正确部分,我尝试了以下操作:
   func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
guard let menuType = MenuType.allCases.first(where: { $0.section == indexPath.section && $0.row == indexPath.row }) else {return}
dismiss(animated: true) { [weak self] in
self?.didTapMenuType?(menuType)
}
}

在我的 主VC 我做了一个 开关盒 将操作应用于不同的情况:
func transition(_ menuType: MenuType)
switch menuType {
case .a:
// action
case .b:
...


最后在用户点击侧面菜单按钮时调用它:
//button action ...
menuViewController.didTapMenuType = { menuType in
self.transitionToNew(menuType)

过渡效果很好。 But when selecting a row nothing happens.
当我的主 Controller 是 时,它起作用了UITableViewController .我唯一改变的是将表格 View 嵌入到我的 的容器中。 UIViewController 获得对布局的更多控制(在表格 View Controller 内布局 View 令人沮丧)。

谁能告诉我我错过了什么?我想问题是我的 tableView(disSelectRowAt:) 功能不适用于我容器内的表格 View !?

很抱歉这个问题很长,但我想不出一个可行的解决方案。
提前致谢!

最佳答案

您的 tableView 似乎尚未连接委托(delegate)给您的viewController无论是在界面生成器中,还是在代码中,在您viewDidLoad 中例如:

myTableView.delegate = self

编辑 : 不要忘记让你的 View Controller 符合 UITableViewDelegate
class MyViewController: UIViewController, UITableViewDataSource, UITableViewDelegate { ... } 

关于ios - 如何访问容器中各部分的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61405144/

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