【发布时间】:2013-04-01 10:19:40
【问题描述】:
我有标准的视图控制器作为它上面的模态视图控制器的代表。 此模式视图控制器包含在导航控制器中。
在呈现模态并将另一个视图控制器推送到导航堆栈后,我想将一些数据传递回初始委托视图控制器(呈现模态)。
我是否应该先将导航堆栈中的消息传回模态导航控制器的根视图控制器,然后只使用该控制器的委托方法?
或
我是否应该将委托属性传递给嵌套视图控制器,然后使用实现的单独协议直接调用委托。它可以这样做,但我必须使用
@property (nonatomic, weak) id delegate;
而不是
@property (nonatomic, weak) id <NestedViewDelegate> delegate;
否则,当我从堆栈中的预览视图控制器传递委托时,我会收到不兼容的类型错误:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NestedViewController *nest = [[NestedViewController alloc] init];
// @property id <RootViewControllerDelegate> delegate
[nest setDelegate:[self delegate]];
[[self navigationController] pushViewController:nest animated:YES];
}
这种情况的最佳做法是什么?
谢谢
【问题讨论】:
-
嗨,Cameron,您成功实施了解决方案吗?你是如何解决这个问题的?我正在寻找解决方案,因为我有同样的问题。
-
我认为通知是最简单的。
标签: objective-c ios