это очень общий вопрос.Вы в основном спрашиваете, как передать информацию с одного контроллера на другой контроллер.Есть разные способы сделать это, протокол (через который делегат обычно общается) является одним из них.Самая быстрая вещь, которую вы можете сделать, не делая предположений в своем коде, что может быть проблематичным позже, - это передать homeScreenController, когда вы нажимаете messageListController
, а затем detailMessageController
.Для этого вам нужно определить iVar и свойство в messageListController
и detailMessageController
.
Что-то вроде:
в messageListController.h
:
#import "HomeScreenController.h"
@interface messageListController : UITableViewController {
// your iVars
HomeScreenController *homeScreenController;
@end
@property (nonatomic, assign) HomeScreenController * homeScreenController;
добавить тот же iVar и свойство для homeScreenController
в detailMessageController
.
в homeScreenController.h
:
- (void)pushMessageListController
{
MessageListController *messageListController = [[MessageListController alloc] init];
messageListController.homeScreenController = self;
// push messageListController onto navigation controller here
[messageListController release];
}
в messageListController
сделать то же самое, что и выше, при создании и нажатииdetailMessageController
.Теперь, в detailMessageController
вы можете отправлять сообщения непосредственно на homeScreenController
.
Если вы хотите обобщить вышеприведенную реализацию, чтобы ваши контроллеры не были специально осведомлены друг о друге, тогда вы можете определить протокол и передать homeScreenController
в качестве делегата, поддерживающего этот протокол.