首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Xcode 8.1和解压segues有问题

Xcode 8.1和解压segues有问题
EN

Stack Overflow用户
提问于 2016-10-26 13:45:40
回答 3查看 1.7K关注 0票数 4

我无法与最新的Xcode 8.1通用汽车公司合作。我只是想知道我是唯一一个,还是其他人在经历同样的事情。我像以前一样设置了视图控制器,它在Xcode 8.0中工作,但是现在我没有运气了。试着打扫等等,但什么也帮不上。我希望其他人也能在我提交雷达之前对它进行测试.

首次实例化该view controllerview controller具有以下代码:

代码语言:javascript
运行
复制
@IBAction func unwindToSettingsTableViewController(_ segue: UIStoryboardSegue) {
    print("unwind")
}

我也尝试了没有下划线,但这没有帮助。在设置此选项时,您应该能够从文件所有者中ctrl拖动到退出,并启动解压segues:

所以,要么我做错了(我不这么认为,它以前工作得很好),要么是Xcode 8.1中有一个bug

我试着在一个新项目中做同样的事情,然后它就正常工作了。所以我想我的项目或故事板文件有问题。

更新

因为故事板包含的场景很小,所以我只是删除了它,然后再重新创建它,使用相同的类来处理视图控制器等等。现在起作用了。因此,拥有完全相同的代码,但一个新鲜的故事板,使我认为这是一些错误。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-10-26 17:52:59

我找到了奇怪行为的原因。它需要一点解释,我们如何构建我们的应用程序,以了解如何和为什么。

首先,与其拥有大的ViewControllers,我们更倾向于将它们分成更小的块。这样,我们总是知道“业务逻辑”在哪里,在哪里可以找到数据源、出口和操作等等。典型的TableViewController如下所示:

SampleTVC.swift

代码语言:javascript
运行
复制
class SampleTableViewController: UITableViewController {
    @IBOutlet var someLabel: UILabel!
    @IBOutlet var someButton: UIButton!

    @IBAction func unwindHere(_ segue: UIStoryBoardSegue) {
        doSomething()
    }

}

SampleDelegate+DataSource.swift

代码语言:javascript
运行
复制
extension SampleTableViewController {
    override func numberOfSections(in tableView: UITableView) -> Int
    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
}

SampleFetchedResultsController.swift

代码语言:javascript
运行
复制
extension SampleTableViewController: NSFetchedResultsControllerDelegate {
    var fetchedResultsController: NSFetchedResultsController<Item>
    func controllerWillChangeContent(_ controller: NSFetchedResultsController<NSFetchRequestResult>)
    func controller(_ controller: NSFetchedResultsController<NSFetchRequestResult>, didChange sectionInfo: NSFetchedResultsSectionInfo, atSectionIndex sectionIndex: Int, for type: NSFetchedResultsChangeType)
    func controller(_ controller: NSFetchedResultsController<NSFetchRequestResult>, didChange anObject: Any, at indexPath: IndexPath?, for type: NSFetchedResultsChangeType, newIndexPath: IndexPath?)
    func controllerDidChangeContent(_ controller: NSFetchedResultsController<NSFetchRequestResult>)
}

我在这里尝试将代码与由这些较小的比特组成的TVC连接起来,没有办法,不会弹出回放。

因此,将所有的扩展名放在与SampleTableViewController相同的文件中,仍然无法工作。

解决方案是删除所有扩展,并将所有函数放入类本身,然后按其应有的方式工作。这没什么意义,这显然是个错误。

票数 3
EN

Stack Overflow用户

发布于 2016-10-26 14:16:44

今天早上我也发生了同样的事。我的问题是,我正在创建的@IBAction被翻译成不同名称的Storyboard,在您的例子中,这个名称是:

"unwindToSettingsTableViewControllerWithSegue"

我所做的是删除属性检查器中的"WithSegue“部分,一切都按预期进行。我不知道这是否是一个bug,或者是不是发生在你身上的事情。

希望能帮上忙。

票数 1
EN

Stack Overflow用户

发布于 2016-11-13 10:11:18

我对我的项目也有同样的问题--但它似乎是一个项目范围的错误。

我可以创建一个新的项目,并且创建一个解压单元没有问题,但是即使在我当前的项目中创建一个新的故事板,只有NavigationController和两个ViewControllers --反卷子--也不会出现在“退出”按钮上。

这是一个非常恼人的错误,因为它使我的项目尖叫停止。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40264022

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档