【发布时间】:2012-02-24 10:08:57
【问题描述】:
我的 storyboard 中有三个 viewController,每个都有三个 viewController 类。从我的主视图控制器中,我以“模态”类型的 segue 打开一个导航视图控制器,这是一个多步骤表单,其中有两个视图。当用户在最后一个(即第二个)视图上点击“完成”时,模式将被关闭,用户返回主屏幕。
我正在与代表一起做这件事。完成按钮的代码也在委托中,并放置在主视图控制器的实现文件中。为了实现这一点,我将委托从主视图传递到导航的第一个视图,然后从第一个视图单击“下一步”,我将委托传递到第二个(最后一个)视图(具有完成按钮)。
委托从主页面传递到导航的第一页是这样的:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"CreateCast"])
{
UINavigationController *navigationController = segue.destinationViewController;
CreateCastStepOneVC *createCastStepOneVC = [[navigationController viewControllers] objectAtIndex:0];
createCastStepOneVC.delegate = self;
}
}
delegate 从导航的第一个视图传递到第二个视图是这样的:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"ToCastStepTwo"])
{
CreateCastStepTwoVC *createCastStepTwoVC =
segue.destinationViewController;
createCastStepTwoVC.delegate = delegate;
}
}
事情做得很好,代表正在按要求做它的工作。但是会弹出一个令人担忧的警告:
将“_weak id”传递给参数 不兼容的类型“id”
第一个导航视图中的属性声明如下:
@property (nonatomic, weak) id <CreateCastStepOneVCDelegate> delegate;
属性声明是第二个导航视图是这样的:
@property (nonatomic, weak) id <CreateCastStepTwoVCDelegate> delegate;
【问题讨论】:
标签: objective-c ios ios5 uiapplicationdelegate segue