gpt4 book ai didi

ios - 当我的 tableView 在 TabBar 中时,pushViewController 不工作

转载 作者:行者123 更新时间:2023-11-28 08:38:09 32 4
gpt4 key购买 nike

我在 TabBar 中有一个 TableViewController。当我选择 tableView 的一个单元格时,我想使用 pushViewController(MyNewController) 启动一个新 Controller 。

这是我的代码:

在我的 TableView 中:

  func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let myController = (storyboard.instantiateViewControllerWithIdentifier("MyViewController") as? MyViewController)!
myController.parameter = self.tableau[indexPath.row]
UINavigationController().pushViewController(myController, animated: true)
}

在我的 TabBar 中:

func viewDidLoad() {
super.viewDidLoad()
var controllerArray: [UIViewController] = []

let controller: UIViewController = ClubPreviewListViewController()
controller.title = "TEST"
controllerArray.append(controller)

self.view.addSubview(pageMenu!.view)
}

(我使用 CAPSPageMenu 来自定义我的 TabBar,但这不是问题,没有它我也有同样的问题)

在我的 Controller 中:

deinit {
print ("TEST")
}

当我选择一个单元格时,每次选择时日志都会写入“TEST”,但不会更改 View 。

我认为是我的 navigationController 出了问题,但我不知道如何解决。

在我实现 TabBar 之前,我单独使用我的 TableView,推送确实有效。

对不起我的英语!感谢您的帮助。

编辑:

我改变了我的 pushViewController :

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let myController = (storyboard.instantiateViewControllerWithIdentifier("MyViewController") as? MyViewController)!
myController.parameter = self.tableau[indexPath.row]
//UINavigationController().pushViewController(myController, animated: true)
self.navigationController?.pushViewController(myController, animated: true)
}

同样的 react 。

我的 NavigationController 没有直接链接到我的 TabBar。我需要创建另一个吗?我真的不明白 NavigationController 是如何工作的!

This is my configuration

编辑 2:

如果我使用我的 TabBar 而不是我的 TableView 的导航 Controller , View 会改变!

self.saveTabBarNavigationController.pushViewController(myController, animated: true)

最佳答案

你正在线上创建一个导航 Controller 的实例

UINavigationController().pushViewController(myController, animated: true)

一旦此方法执行完毕,导航 Controller 及其 View Controller 将被释放,因为没有任何内容保留您的导航 Controller 。在您的 deinit() 函数中打印“TEST”。

您应该获取拥有当前标签栏 Controller 的导航 Controller ,并使用它插入堆栈。如果不知道你的应用程序的结构,就很难知道你的导航 Controller 在哪里(如果它存在的话)。

检查你的 Storyboard,但基本上尝试:

self.navigationController.pushViewController(myController, animated: true)

关于ios - 当我的 tableView 在 TabBar 中时,pushViewController 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37167788/

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