我的真正问题是我想通过 modal segue 将数据从childViewController传递到情节提要中的parentViewController。
代码
parentViewController.h
@property (strong, nonatomic)NSMutableArray *address;
childViewController.m
parentViewController *parent=(parentViewController *)self.presentingViewController;
post.address=@"Hello World";
这段代码抛出异常
由于未捕获的异常而终止应用程序
'NSInvalidArgumentException',原因:'-[MainTabbarViewController
setAddress:]:无法识别的选择器已发送到实例0x7fa070e6b910'
故事板结构
TabbarController-> NavigationController-> parentViewController-> childViewController
先感谢您。
最佳答案
无法获得对创建您的segue的引用。您可以在目标控制器中创建一个属性(在我的示例中为sourceVC),并在prepareForSegue方法中(在源视图控制器中)将self分配给该属性:
[(ChildViewController *)segue.destinationViewController sourceVC] =自我;
无论如何,我认为使用委托是一个更好的解决方案。
*在ChildViewController.h中*
@protocol ChildDelegate <NSObject>
- (void)postAddress:(NSString*)ad;
@end
@interface ChildViewController : UIViewController
@property (weak, nonatomic) id <ChildDelegate> delegate;
@end
*在ParentViewController.h中*
@interface ParentViewController : UIViewController <ChildDelegate>
@end
*在ParentViewController.m中*
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
ChildViewController *vc = [segue destinationViewController];
vc.delegate = self;
}
*在ChildViewController.m中*
- (void)changeAddress:(NSString*)ad
{
if ([self.delegate respondsToSelector:@selector(postAddress:)])
{
// Tell the delegate something.
[self.delegate postAddress:@"New Address"];
}
}
关于ios - 在 Storyboard 中以模态segue传递数据?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30885140/