gpt4 book ai didi

ios - 无法调用 tableViewController

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

我一直在努力切换 viewController。

我得到了以下 Storyboard:

storyboard

左上角的 VC 是登录 VC,它通过模态 Segue 将 View 推送到 MainViewController(左下角)。

这可以通过以下方式正常工作:

self.performSegueWithIdentifier("MainSegue", sender: self)

MainViewController 托管一个“菜单”栏项目,单击该项目时将启动 cocoa 控件 SSASideMenu 并显示 LeftSideMenu VC。这也很好用。

LeftSideMenu VC 有 2 个菜单项(“home”和“order”)。项目“home”将返回到 MainViewController(下面的情况 0 - 工作正常)。项目“order”需要呈现 ItemTableViewController(右上),它基本上是一个 tableVC,其中嵌入了导航 Controller 中的原型(prototype)单元。

下面的情况 1 是全部出错的地方:

func tableView(..........) {

tableView.deselectRowAtIndexPath(indexPath,animated: true)

switch (indexPath.row) {
case 0:
sideMenuViewController?.contentViewController =
UINavigationController(rootViewController: MainViewController())
sideMenuViewController?.hideMenuViewController()
break
case 1:
sideMenuViewController?.contentViewController =
UINavigationController(rootViewController: ItemTableViewController())
sideMenuViewController?.hideMenuViewController()
break
}
}

因此,情况 1 将导致调用 ItemTableViewController 的 func tableView:

func tableView(tableView: UITableView, cellForRowAtIndexPath ...) {

let cellIdentifier = "MenuItemTableViewCell"
let cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier) as! MenuItemTableViewCell!

let item = items[indexPath.row]

cell.cellTitle.text = item.name // **cell is always nil**

....

单元格始终为零。

我尝试通过以下方式注册该类(class)(尽管我不必这样做,因为我使用的是 Storyboard):

    let cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier) as! MenuItemTableViewCell!
if cell == nil {
tableView.RegisterClass(MenuItemTableViewCell.self, forCellReuseIdentifier: cellIdentifier)
cell = MenuItemTableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: cellIdentifier)

let item = items[indexPath.row]

cell.cellTitle.text = item.name // **cell is still nil**

我还尝试使用 segue,但得到了 LeftSideMenu 上的 segue 不存在错误(它确实存在于正确的 cellIdentifier 中)。

底线是我无法调用 ItemTableViewController(右上 tableVC)!

请问有什么线索吗?

最佳答案

你永远不应该调用dequeueReusableCellWithIdentifier:。始终使用 dequeueReusableCellWithIdentifier:forIndexPath: 来代替。它永远不会返回nil单元格,如果出现问题,它会给你一个很好的错误消息来解释原因。

我预计会发生的是,您会收到一条错误消息,告诉您未连接到 Storyboard 中的原型(prototype)单元。然后你必须弄清楚为什么。当然,获得正确的单元标识符至关重要:它必须完全与代码的重用标识符匹配,包括拼写。但它的意义远不止于此。也许您忘记在 Storyboard中设置 TableView Controller 的自定义类。或者,您可能获得了错误的 TableView Controller 实例 - 即,您创建了一个新实例,而不是从 Storyboard 中获取实际实例(具有原型(prototype)单元的实例)。

关于ios - 无法调用 tableViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32935427/

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