Шаблон проектирования маршрутизации в Objective-C - PullRequest
0 голосов
/ 17 ноября 2018

Я нашел хороший учебник по шаблону маршрутизации в Swift

Может кто-нибудь объяснить или создать это в Objective-C?

ЗАДАЧА

Для перехода с одного контроллера вида на любой другой, и наоборот

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

https://medium.com/commencis/routing-with-mvvm-on-ios-f22d021ad2b2

1 Ответ

0 голосов
/ 17 ноября 2018

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

Obj-C:

@class HomeViewController;

@protocol HomeFlowDelegate

- (void)didTapRegistrationButtonInViewController:(HomeViewController*)viewController;

@end

@interface HomeViewController: UIViewController

@property (nonatomic,weak) id<HomeFlowDelegate> flowDelegate;

@end

@implementation HomeViewController

- (void)registrationButtonTapped {
    [self.flowDelegate didTapRegistrationButtonInViewController:self];
}

@end

Swift:

protocol HomeFlowDelegate {
    func didTapRegistrationButton(in viewController: HomeViewController)
}

class HomeViewController: ViewController {
    weak var flowDelegate: HomeFlowDelegate?

    func registrationButtonTapped() {
        flowDelegate?.didTapRegistrationButton(in: self)
    }
}

Делегат потока может решить, например, нажать ли новый экран илипредставить его модально или выполнить любой поток, который будет уместен.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...