2016-10-26 6 views
4

Я не могу разобраться, чтобы работать с последними Xcode 8.1 GM. Мне просто интересно, я единственный, или кто-то другой переживает то же самое. Я установил контроллеры вида, как и раньше, он работал в Xcode 8,0, но теперь мне не повезло. Пробовал чистить и так далее, но ничего не помогает. Я хотел бы кто-то другой мог бы проверить это, как задолго до того, как я подам радар ...Возникли проблемы с Xcode 8.1 и разматывать сегменты

view controller, что первый экземпляр view controller оказывает следующий код:

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

Я также попытался без подчеркивания, но это не помогло. При настройке этого параметра вы должны уметь ctrl перетащить из файла владельца файла, чтобы выйти, и встать на развязку: No unwind segue showing up here... Так что я тоже делаю это совершенно неправильно (я так не думаю, что он отлично работал раньше) или есть ошибка в Xcode 8.1

Я попытался сделать то же самое в новом проекте, а затем он работал правильно. Поэтому я думаю, что что-то не так с моим проектом или файлом раскадровки.

Update

Поскольку раскадровки держат довольно небольшие сцены, я просто удалил его, и воссоздал его, используя те же классы для контроллеров зрения и так далее. И теперь это работает. Таким образом, имея точно такой же код, но свежий раскадровки, мне кажется, что это какая-то ошибка.

+0

Если вы прочитали вопрос, вы бы увидели, что я перетащил его из владельца файла и выходил, как показано на скриншоте. И вы действительно ошибаетесь в отношении добавления вида программно. Он отлично работает при подключении его из раскадровки. –

ответ

2

Я нашел причину странного поведения. Это требует небольшого объяснения того, как мы создаем наши приложения, чтобы понять хау и whys.

Прежде всего, вместо наличия больших ViewControllers мы стремимся разделить их на более мелкие куски. Таким образом, мы всегда знаем, где «бизнес-логика», где найти источник данных, выходы и действия и т. Д. Типичный TableViewController сделан так:

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.скор

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>) 
} 

Я попытался здесь, чтобы подключить код с ТВЦ из этих меньших битов, и никоим образом не перемотка назад переход не выскочит.

Итак, помещая все расширения в том же файле, что и SampleTableViewController, он все равно не будет работать.

Решение заключалось в том, чтобы удалить все расширения и поместить все функции в сам класс, а затем он работал так, как должен. Это не имеет большого смысла, это явно ошибка.

+0

Для меня просто переместить расширения обратно в тот же файл исправлена ​​проблема. Очевидно, ужасная ошибка. Надеюсь, скоро исправится. –

+0

Я вообще не использовал segues, вместо этого я пошел за моделью Flow Coordinator, объясненной Крисом Эйдхофом и Флорианом Куглером в эпизоде ​​5 эпизода Objc.io Swift. Https://talk.objc.io/episodes/S01E05-connecting-view- контроллеры –

+0

@GJNilsen, эта глупая ошибка по-прежнему существует в xCode 8.3.3! .. У меня были те же проблемы и я начал с нуля несколько раз, чтобы узнать, как перемещать классы расширения внутри самого класса, наконец, позволил мне расслабиться segue через Ctrl + Перетаскивание в Exit ... это действительно раздражает – Pangu

1

То же самое произошло со мной сегодня утром. Моя проблема заключалась в том, что @IBAction я создавал, была переведена на раскадровку с другим именем, которое в вашем случае будет:

"unwindToSettingsTableViewControllerWithSegue"

enter image description here

То, что я сделал, это удалить часть «WithSegue» в инспекторе атрибутов, и все сработало, как ожидалось. Я не знаю, является ли это ошибкой, или если это то, что происходит с вами.

Надеюсь, это поможет.

+0

Спасибо за подсказку. Мне это не очень помогло, но, по крайней мере, я знаю, что я не единственный, кто должен сражаться с Раскадками. –

0

У меня такая же проблема с моим проектом, но, похоже, это ошибка проекта.

Я могу создать новый проект и не создавать проблемы с созданием развязки, но даже создание новой раскадровки в моем текущем проекте с помощью только NavigationController и двух ViewControllers перемотка назад не появляется на кнопке выхода.

Это очень раздражающая ошибка, поскольку она привела мой проект к визгу.

 Смежные вопросы

  • Нет связанных вопросов^_^