【问题标题】:ViewController has no segue, swiftViewController 没有 segue,快速
【发布时间】:2016-03-08 10:06:12
【问题描述】:

这是一个非常受欢迎的问题,但是我花了两天时间寻找解决方案,但没有任何效果。

我有两个 TableView 控制器(WeekTableViewController 和 DiscoverTableViewController),如图所示,由名称为“discoverWorkouts”的 segue 链接。 DiscoverTableViewController 是 PFQueryTableViewController 的子类。

在添加从 WeekTableViewController 到 DiscoverTableViewController 的常用函数时,我收到以下令人讨厌的错误: "WeekTableViewController: 0x1058469c0>) 没有与标识符 'discoverWorkouts' 的 segue

我在 WeekTableViewController 中以编程方式创建了一个按钮,这是我的代码。

WeekTableViewController:

 override func viewDidLoad() {
        super.viewDidLoad()

        //transitionManager = TransitionManager(transitionAnimation: .Fade)
        //transitioningDelegate = transitionManager


        self.navigationController?.navigationBarHidden = true //Hide the navigation bar
        //        tabBarController?.tabBar.hidden = false
        //        self.hidesBottomBarWhenPushed = true


        //Add a button to the
        pingbutton   = UIButton(type: UIButtonType.Custom) as UIButton
        pingbutton.frame = CGRectMake(328, 620, 30,  30)
        pingbutton.setImage(UIImage(named: "discover"), forState: UIControlState.Normal)
        pingbutton.addTarget(self, action: "pingButtonTapped:", forControlEvents: UIControlEvents.TouchUpInside)
        pingbutton.hidden = true

        self.navigationController?.view.addSubview(ping button)


....

}

//MARK: Button Tapped
    func pingButtonTapped(sender:UIButton!)
    {
        self.performSegueWithIdentifier("discoverWorkouts", sender:self)
    }


    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {

if segue.identifier == "openDiscover" {

            let discoveryView = segue.destinationViewController as! DiscoverTableViewController
            discoveryView.transitioningDelegate = self.transitionManager
        }

    }

在 "self.performSegueWithIdentifier("discoverWorkouts", sender:self)" 上设置断点表明错误发生在该处。

我已经尝试了所有方法:

  • 删除我设备上的应用程序并重新安装。
  • 删除 Segue 并以不同的名称再次添加它。
  • 重新构建两个 tableViewController 并再次放置 segue。

根本没有任何效果。

在我的应用委托中,这也是 WeekTableViewController 的启动方式:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

        UIApplication.sharedApplication().statusBarStyle = .LightContent

        //Launch Process
            let weekView =  WeekTableViewController()
            self.landingNavigationController = UINavigationController(rootViewController: weekView)
            self.landingNavigationController?.navigationBar.barTintColor = UIColor.blackColor()
            self.landingNavigationController?.navigationBarHidden = true

            self.window?.tintColor = UIColor.blackColor() //(red: 0.0, green: 1.0, blue: 30.0/255.0, alpha: 1.0)
            self.window?.rootViewController = self.landingNavigationController
//            self.window?.rootViewController = tabBarNavController
            self.window?.makeKeyAndVisible()


}

关于世界上可能发生的事情的任何想法。谢谢。 :)

【问题讨论】:

    标签: swift uitableview uiviewcontroller uistoryboardsegue


    【解决方案1】:

    如果你想使用它的功能,你必须从你的故事板中实例化你的ViewControllers。

    因此,与其自己创建ViewControllers,不如执行以下操作:

    let storyboard = UIStoryboard(name: "MyStoryboardName", bundle: nil)
    self.landingNavigationController = storyboard.instantiateInitialViewController() as! UINavigationController
    // additional setup (optional)
    self.window?.rootViewController = self.landingNavigationController
    self.window?.makeKeyAndVisible()
    

    这将创建您在故事板中配置的初始 ViewController(可能是 UINavigationController)。

    【讨论】:

    • 非常感谢。它只需要一点时间。我意识到我的 WeekTableViewController 没有导航控制器,所以我在其中嵌入了一个,并且根据您的建议,一切都解决了。 ;).
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-23
    • 1970-01-01
    • 2014-01-10
    • 2017-05-12
    相关资源
    最近更新 更多