Xkod 4.5 «Розкладинка»


102

Щойно я встановив Xcode 4.5 для підтримки iOS6, і я побачив нову піктограму під назвою "Вихід" на своїй дошці даних, перелічену під контролерами перегляду разом із "Першим відповідачем" тощо. Маленький зелений значок із написом "Вихід".

Я нічого не можу знайти на ньому, ані розробити, як це можна використовувати.

Хто-небудь знає про нього, як це працює, для чого він потрібен?


1
На аналогічне запитання я опублікував цю відповідь: stackoverflow.com/questions/12569316/… Це допомагає пояснити, як використовувати функцію виходу (розмотування)
Ерік

Відповіді:


72

Це називається " Розмотування Segue ". На жаль, поки що немає жодної документації, крім короткої згадки у списку нових функцій XCode 4.5, де зазначено:

Розмотування невдач може дозволити перехід до наявних екземплярів сцен у розкадровці

Хороша новина полягає в тому, що відбувається сесія WWDC 2012, в якій пояснюються ці істоти (серед іншого).

Ви можете просто увійти в Apple iv Dev Center із деталями свого облікового запису розробника, а потім перейти на сторінку відеозаписів WWDC 2012 та переглянути «Прийняття розгортки у вашому додатку» (це п’яте місце вгорі). .


Оновлення: Ось додаткова інформація про цю тему з документації Apple

Об'єкт-заповнювач на ім'я Вихід для розмотування послідовностей. За замовчуванням, коли користувач відхиляє дочірню сцену, контролер перегляду для цієї сцени розкручується (або повертається) на батьківську сцену - тобто ту сцену, яка спочатку перейшла до дочірньої сцени. Однак об'єкт Exit дозволяє контролеру перегляду відмовитися від довільної сцени.

(З docset iOS6> Загальне> Початок роботи)

І ось приємний приклад того, як можна реалізувати його


Ще одне оновлення:

Ось технічна записка від Apple щодо цієї теми.


3
Гаразд, так як ти ним користуєшся? Спробували клацання керування від об'єкта виходу внизу контролера перегляду, але це ні до чого не пов’язувало.
shim

4
Ви в основному повинні визначити метод для розмотуваного мозку, а потім підключитись із елемента до exitкнопки, вибравши метод, який ви хочете викликати. Ви можете знайти приклад тут (я також оновив свою відповідь, щоб включити приклад)
Алладіан

1
-1: багато слів, мало корисної інформації. Після читання на цьому і використовувати його в своєму власному додатку, я написав цю відповідь , який , сподіваюся , більш корисним: stackoverflow.com/a/25829835/901641
ArtOfWarfare

1
Ось чому я люблю неіснуючі документації Apple. Людина, когось там слід звільнити.
Качка

@SpaceDog Можливо, саме так і сталося, їх усіх звільнили, і ніхто не залишає писати документацію: / Я люблю відео WWDC, хоча - 2012 рік, мабуть, рік, коли Apple досяг свого піку.
turingtest

10

Уявіть, що у вашій раскадровці є послідовність переглядів:

A -> ... -> Z

Ви хочете мати кнопку перегляду, Zяка дозволяє користувачеві пройти весь шлях назад A.

Отже, вам потрібно зробити уявлення про те, що ви хочете створити резервне копіювання, в цьому випадку, Aметод екземпляра, який позначений як "a" IBActionі містить один параметр типу UIStoryboardSegue *. Назва методу та змінної значення не має. Те, що ви робите в рамках впровадження, також не має значення. Ось приклад:

Obj-C:
У A's інтерфейс (НЕ Z' s):

- (IBAction)cancelSignup:(UIStoryboardSegue *)unwindSegue;

У Aвпровадженні 's (не Zє):

- (IBAction)cancelSignup:(UIStoryboardSegue *)unwindSegue {
    // Only "implemented" to satisfy a respondsToSelector: search.
    // You can actually implement more stuff here, if you want, IE, if
    // you need to reach out to a server to mention that this screen was
    // returned to from a later screen.
}

Swift:
В Aджерелі (не Z):

@IBAction func cancelSignup(unwindSegue: UIStoryboardSegue) {
    // Only "implemented" to satisfy a respondsToSelector: search.
    // You can actually implement more stuff here, if you want, IE, if
    // you need to reach out to a server to mention that this screen was
    // returned to from a later screen.
}

Тепер у межах вашої розкадровки controlперетягніть елемент із Z(IE, кнопка скасування) на Zs Exit. Він просканує всі перегляди вище в ієрархії подання, які мають дію, IBActionщо приймає лише одне UIStoryboardSegue *як дію, і перелічить їх, з яких ви можете вибрати.

Сподіваємось, це було більш прямого і корисного, ніж існуючі відповіді. Я виявив, що це посилання є особливо корисним, тому якщо є деталь, на яку ви все ще нечітко читаєте мою відповідь, можливо, це може вам допомогти (я спробував просто звести всю корисну інформацію з цієї довгої статті в коротку відповідь): http://www.freelancemadscience.com/fmslabs_blog/2012/9/24/advanced-storyboard-techniques.html


4

Див. Також Неможливо підключити Розгорнуту розмотку Segue, яка роз'яснює вимоги, щоб реалізувати піктограму Exit. Ви повинні мати, вище в ієрархії контролера перегляду, такий спосіб:

  1. Позначено як IBAction

  2. Бере один параметр, що є UIStoryboardSegue *

Якщо обидві ці умови виконані, піктограма Вихід побачить її та дозволить вам підключитися до неї, перетягуючи за допомогою кнопки в одному контролері подання.

Зараз я також розмістив тут найпростіший приклад у світі:

https://github.com/mattneub/Programming-iOS-Book-Examples/tree/master/ch19p638презентаціяViewControllerStoryboard (зафіксовано 12 липня 2013 р.)

Це показує, наскільки тривіально просто зараз - відмовлятись та повертатися від представленого контролера перегляду, на відміну від усієї роботи, яку ви повинні були виконати раніше, щоб передавати інформацію туди-сюди (речі в шаблоні з делегатом та протоколом , усе це тепер можна видалити).


3

Просто додавання незначної тонкості до визначення вимог, яке може допомогти. Це засновано на експерименті в Xcode 4.6. Я виявив, що саме метод і лише декларування (!) Дозволяє отримати потрібну відповідь на перетягування з Xcode. Ось, що я визнав повними вимогами:

  • Позначено як IBAction
  • Бере один параметр, який є UIStoryboardSegue*
  • У вас повинна бути оголошена дія (але не обов'язково реалізована [означає метод у .Mрозділі про реалізацію]).
  • Це може бути декларація інтерфейсу будь-якого класу, навіть розділ інтерфейсу .M, за винятком класу appdelegate. (Я не бачив ніякої залежності від його положення в ієрархії контролера. Ви можете додати будь-який старий файл, і система, схоже, об'єднує всі методи, які мають UIStoryboardSegueпараметр, і відображає їх у меню значка «Вихід»). меню навіть покаже вам ваш метод, якщо метод знаходиться в класі сцени, якою ви маніпулюєте в редакторі розкладок, але він з’явиться без двокрапки і, здається, не викликає жодних дій під час виконання.

Приклад: -(IBAction)anymethodname:(UIStoryboardSegue *)myvariable;

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.