2016-10-26 18 views
4

最新のXcode 8.1 GMで動作するように巻き戻すことができません。私は唯一の人か他の誰かが同じことを経験しているかどうかは不思議です。私は以前のようにビューコントローラを設定しましたが、それはXcode 8.0で動作しましたが、今は運がありません。きれいにしようとしましたが、何も助けません。私が最初にview controllerをインスタンス化view controller次のコード持っている...私はレーダーを提出する前に他の誰かが同様にそれをテストすることができXcode 8.1と巻き戻しの問題がある

をしたいと思います。私もアンダースコアなしで試してみました

@IBAction func unwindToSettingsTableViewController(_ segue: UIStoryboardSegue) { 
    print("unwind") 
} 

を、しかし、それは助けになりませんでした。 No unwind segue showing up here... 私はそれを完全に間違っている(私はそうは思わない、それは前に完璧にうまくいった)か、どちらかといえば、それを設定するときに、ctrlがファイルの所有者から終了するまでドラッグすることができるはずです。またはバグがありますXcode 8.1

私は新しいプロジェクトで同じことを試みましたが、それは正しく動作しました。だから私はプロジェクトやストーリーボードファイルに何か問題があると思う。

更新

ストーリーボードではなく、小さなシーンを保持しているので、私はちょうどそれを削除し、ビューコントローラなどのために同じクラスを使用して、再びそれを再作成しました。そして今、それは動作します。だから、まったく同じコードを持っていて、新鮮なストーリーボードを持っていれば、それはいくつかのバグだと思う。

+0

質問を読んだ場合、ファイル所有者からドラッグして終了したことが分かりました。スクリーンショットには同じものが表示されています。また、プログラムでビューを追加することは本当に間違っています。それはストーリーボードから接続するときにうまく動作します。 –

答えて

2

私は奇妙な行動の理由を見出しました。私たちのアプリをどのように構築して、そのやり方を理解するかについて少し説明が必要です。

まず、大きなViewControllerを使用する代わりに、より小さなチャンクに分割する傾向があります。このようにして、私たちは常に「ビジネスロジック」がどこにあるのか、データソース、アウトレットとアクションなどをどこに見つけるのかを知っています。

SampleTVC.swift

class SampleTableViewController: UITableViewController { 
    @IBOutlet var someLabel: UILabel! 
    @IBOutlet var someButton: UIButton! 

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

} 

SampleDelegate + DataSource.swift

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:典型的TableViewControllerこのように構成されています。

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と同じファイルに入れても、それはまだ機能しません。

解決策は、すべての拡張機能を削除し、すべての機能をクラス自体に入れて、それが正常に動作するようにすることでした。それはあまり意味がありません、明らかにバグです。

+0

私にとっては、拡張機能を同じファイルに戻すだけで問題は解決しました。明らかに恐ろしいバグです。うまくいけばすぐに修正されました。 –

+0

私はseguesの使用をやめました。代わりに、Objc.io Swift Talkエピソード5でChris EidhofとFlorian Kuglerによって説明されたFlow Coordinatorモデルに行きました。https://talk.objc.io/episodes/S01E05-connecting-view-コントローラ –

+0

@ GJNilsen、この愚かなバグはまだxCode 8.3.3に存在する!! !!私は同じ問題を抱えていて、クラス内で拡張クラスを動かすことを見つけるために何度も最初から始めました。 Ctrl + Escを押して終了する...これは実際にはXcode 9に存在する – Pangu

1

同じことが今朝私に起こった。

enter image description here

"unwindToSettingsTableViewControllerWithSegue":私の問題は、あなたのケースになりますこれ、私が作成していた@IBActionは、別の名前でストーリーボードに翻訳しまったということでした私がしたことは、属性インスペクタの "WithSegue"部分を削除し、すべてが期待どおりに機能したことでした。私はこれがバグか、もしあなたに何が起こっているのか分かりません。

希望します。

+0

チップをありがとう。それは私にはあまり助けにはなりませんでしたが、少なくともストーリーボードと戦う必要はないと私は知っています。 –

0

私のプロジェクトで同じ問題が発生していますが、プロジェクト全体のバグのようです。

新しいプロジェクトを作成したり、巻き戻しセグを作成するのに問題はありませんが、NavigationControllerと2つのViewControllerだけで現在のプロジェクトに新しいストーリーボードを作成しても、巻き戻しセグは終了ボタンに表示されません。

これは私のプロジェクトを慌てて停止させたため、非常に迷惑なバグです。

関連する問題