我的真正问题是我想通过 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/

10-13 03:57