Я много читал о делегате и пробовал его, но не заставил его работать.
Что вы пробовали на самом деле?Ваш LoginViewController должен определять простой протокол делегата, и ваш MainViewController должен соответствовать ему.
Все, что вам нужно сделать, это добавить что-то подобное в LoginViewController.h над @interface:
@protocol LoginViewControllerDelegate
- (void)loginViewControllerDidFinish;
@end
Который объявляет протокол с одним методом.Затем добавьте это между @interface и @end:
@property (nonatomic, assign) id <LoginViewControllerDelegate> delegate;
Это означает, что ваш контроллер представления входа в систему будет иметь свойство под названием делегат, которое будет указывать на экземпляр любого класса (что означает идентификатор), который соответствует егопротокол делегата (вещь между <и>).Не забудьте @synthesize delegate;
внутри .m файла.
Теперь вам нужно внутри MainViewController.h добавить строку @interface следующим образом:
@interface MainViewController : UIViewController <LoginViewControllerDelegate>
, которая сообщаетКомпилятор ваш класс MainViewController соответствует этому протоколу делегата LoginViewControllerDelegate.Теперь реализуйте метод - (void)loginViewControllerDidFinish;
внутри MainViewController.m и перед тем, как представить контроллер вида входа в систему, установите его делегат на себя (login.delegate = self;
).Когда вы закончите в своем контроллере представления входа в систему, перед тем как отменить его, вызовите метод делегата для вашего делегата:
[self.delegate loginViewControllerDidFinish];
И это все.Есть еще вопросы?