Xcode 6 Storyboard Unwind Segue与Swift没有连接到退出

 plumscape_191 发布于 2023-01-11 18:34

当尝试将导航栏按钮连接到Xcode 6中的ViewController的Exit项目时(不确定它是否是Xcode 6问题但值得一提,因为它处于测试阶段)它没有在自定义类中找到Swift函数.

按钮用鞭子退出

它应该找到的功能:

@IBAction func unwindToList(segue: UIStoryboardSegue) {

}

我在视图上创建了另一个按钮,以确保我可以使用Swift处理IBAction并且我正确地编写了它.这很好用:

@IBAction func test(sender: AnyObject) {

    NSLog("Test")
}

我已经看到这个问题似乎是同一个问题,但根据答案,这应该是有效的.

Xcode 6处于测试阶段,当然,Swift非常新,但是在考虑它是一个潜在的错误之前,想看看是否有人遇到过这种情况.

5 个回答
  • 现在可以安装的Xcode 6 Beta 4不支持使用Objective-C解决方法,而是支持在Interface Builder中连接展开segue.您现在可以从iOS开发中心进行更新.按住Control键并从要触发segue的UI项目拖动到退出图标,并在将以下代码放入目标视图控制器后选择函数unwindToSegue.

    @IBAction func unwindToSegue (segue : UIStoryboardSegue) {}
    

    2023-01-11 18:34 回答
  • 这是Xcode 6的一个已知问题:

    Interface Builder无法识别在Swift类中声明的展开segue操作

    为了解决这个问题,您需要:

      更改class MyViewController@objc(MyViewController) class MyViewController

      创建一个Objective-C头文件,其中包含重新声明segue操作的MyViewController类别.

      @interface MyViewController (Workaround)
      - (IBAction)unwindToMyViewController: (UIStoryboardSegue *)segue;
      @end
      

      在故事板中,选择MyViewController的实例,清除其自定义类,然后将其设置回MyViewController.

    完成这些步骤后,您可以再次将按钮连接到退出项目.

    Xcode 6发行说明 PDF,第10页

    2023-01-11 18:35 回答
  • 在可供下载的Xcode 6 Beta 4中,支持展开segues和界面构建器.我在一个小项目中亲自测试过它.

    2023-01-11 18:35 回答
  • 在Swift 2.3中,我发现参数的外部名称必须是"withUnwindSegue":

    @IBAction func unwindToThisView(withUnwindSegue unwindSegue: UIStoryboardSegue) {
        ...
    }
    

    2023-01-11 18:35 回答
  • 我终于可以让它上班了; xcode6 IB现在非常脆弱(崩溃了很多).在将导航栏按钮项目连接到退出项目之前,我必须重新启动IDE.我最终重新创建了我的测试项目并遵循上述建议(Xcode 6发行说明PDF,第10页)以使其工作.另外,在添加.h文件时,我确保选择我的项目目标,默认情况下未选中.我还通过Cocoa Touch Class模板(vs empty swift文件)创建了我的控制器swift存根.我在导航控制器中使用了模态segue.

    ListTableViewController.h

    #import <UIKit/UIKit.h>
    
    @interface ListTableViewController
    - (IBAction)unwindToList: (UIStoryboardSegue *)segue;
    @end
    

    ListTableViewController.swift

    import UIKit
    
    @objc(ListTableViewController) class ListTableViewController: UITableViewController {
    
        @IBAction func unwindToList(s:UIStoryboardSegue) {
            println("hello world");
        }
    
    }
    

    希望有所帮助

    2023-01-11 18:35 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有