这是我在我的应用上的导航
1)homescreenview controller - > composemessageviewcontroller(我可以使用委托将数据发送回homescreenview)
2)homescreenview controller - > messageslistcontroller(tableview) - > detailmessageviewcontroller(这是我的回复按钮所在的位置)。
我的问题是,当我点击回复时,我想将信息发送回带有委托的homescreenviewcontroller。我怎么能这样做?
提前致谢。
---- UPDATE
@XJones,感谢详细的解释。这是推送detailview时应该做的事情吗?如果我错了,请纠正我。
答案 0 :(得分:0)
如何在messageslistcontroller中添加方法?我个人会将委托“homescreenview”添加到detailmessageviewcontroller,因为messageslistcontroller与回复没有任何关系,而且显然是homescreenviewcontroller。
在messageslistcontroller中创建detailmessageviewcontroller时执行以下操作:
detailmessageviewcontroller.homeScreenDelegate = self.delegate;
答案 1 :(得分:0)
一种方法(没有授权)
当你使用navigationController
时,所以
[[self.navigationController viewControllers]objectAtIndex:0]
将始终返回homeScreenViewController
.....你可以使用此对象......
谢谢,
答案 2 :(得分:0)
这是一个非常普遍的问题。你基本上是在询问如何将信息从一个控制器传递到另一个控制器。有不同的方法可以做到这一点,一个协议(代表通常通过什么沟通)就是其中之一。你可以做的最快的事情就是在你的代码中做出可能有问题的假设,就是在你推动messageListController
然后detailMessageController
时传递homeScreenController。您需要在messageListController
和detailMessageController
中定义iVar和属性才能执行此操作。
类似的东西:
messageListController.h
中的:
#import "HomeScreenController.h"
@interface messageListController : UITableViewController {
// your iVars
HomeScreenController *homeScreenController;
@end
@property (nonatomic, assign) HomeScreenController * homeScreenController;
将homeScreenController
的相同iVar和属性添加到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
作为支持该协议的委托传递。