лучшие практики для контроллера навигации - PullRequest
0 голосов
/ 23 апреля 2019

Когда пользователь открывает приложение, он / она увидит подробный контроллер. Существует проблема, так как есть два контроллера представления, список и подробности. Я хотел бы начать с детального контроллера, а затем вернуться к списку (пролистывание влево).

Прямо сейчас у меня есть контроллер представления для раскадровки. Мне это нравится, и это чисто. Я хотел бы сохранить это. И будет больше деталей контроллеров (типы деталей). У него будет список детализированных контроллеров, чтобы выбрать один в списке контроллеров.

Я попытался добавить список с контроллером навигации в раскадровку, но контроллер детализации не имеет контроллера навигации, поэтому всплывающее окно из стека навигации не работает.

Я гуглил и есть несколько решений -

  1. Создайте синглтон для контроллера навигации в AppDelegate и добавьте контроллеры представления в стек. Но не уверен, как я могу добавить контроллер списка, а затем детализировать контроллер.

  2. перетекает

  3. Есть еще идеи?

  4. Шаблон координатора (перебор для этого простого приложения)?

Ответы [ 2 ]

1 голос
/ 23 апреля 2019

На этом этапе вам следует обращаться с ним программно, когда приложение запускается. Для этого вы можете создать контроллер навигации, содержащий контроллеры списка и подробного представления, и установить его в качестве корневого контроллера окна. Пример (при условии, что оба контроллера представления находятся в основной раскадровке):

var window: UIWindow!


func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {


    let firstVC = ListViewController.storyboardInstance()
    let secondVC = DefaultNoteController.storyboardInstance()

    let navigation = UINavigationController()
    navigation.viewControllers = [firstVC, secondVC] as! [UIViewController]
    window = UIWindow(frame: UIScreen.main.bounds)
    window.rootViewController = navigation


    return true
}

В соответствии с этим приложение должно отображать второй контроллер вида в навигационном контроллере (подробности) с панелью навигации, содержащей кнопку возврата.

1 голос
/ 23 апреля 2019

Если вы не хотите использовать навигационный контроллер, но хотите, чтобы пользователь имел возможность провести пальцем влево, чтобы вернуться назад к начальным сведениям v.c. для мастера v.c. мне кажется, что вам нужен UIPageViewController, который обеспечивает именно эту возможность прокрутки.

Однако, если это действительно ситуация с мастер-деталями, то я думаю, что следует использовать контроллер навигации, если вы его сейчас не используете, потому что это естественное выражение мастер-детализации; это то, что пользователь будет ожидать, и сделает все намного проще для вас по мере развития приложения. Нет проблем с первоначальным запуском приложения в контроллере подробных данных в контроллере навигации. Так что этот подход я действительно рекомендую.

...