Ios 使用modal时将数据传递给UIViewController

Ios 使用modal时将数据传递给UIViewController,ios,objective-c,uiviewcontroller,Ios,Objective C,Uiviewcontroller,我有两个视图控制器,MainViewController和SecondViewController 在我的主视图控制器中,我将数据传递到第二个视图控制器,如下所示: -(IBAction)shareToSocial:(id)sender { SecondViewController *view2 = (SecondViewsController *)[storyboard instantiateViewControllerWithIdentifier:@"PushToNext"];

我有两个视图控制器,MainViewController和SecondViewController

在我的主视图控制器中,我将数据传递到第二个视图控制器,如下所示:

-(IBAction)shareToSocial:(id)sender {
    SecondViewController *view2 = (SecondViewsController *)[storyboard instantiateViewControllerWithIdentifier:@"PushToNext"];
    view2.secTitle = self.MainTitle;
    [self.navigationController setModalPresentationStyle: UIModalPresentationCurrentContext];
    [self setModalPresentationStyle:UIModalPresentationCurrentContext];
}
其中,secTitle和MainTitle都是每个控制器的NSString。据我所知,通过将view2.secTitle设置为self.maintTitle,当第二个viewcontroller弹出时,我的view2.secTitle将具有与maintTitle相同的值。所以,如果主标题是“Hello World”,那么我打开secondViewController,secTitle也将是“Hello World”。然而,尽管我正在为它设置数据,但我在使用secTitle时得到了null

如果我使用pushViewController而不是modal,则值会在两个控制器之间传递。所以我不确定我到底做错了什么

我也尝试过使用[view2 SetSectile:MainTitle]但没有效果

我的SecondViewController上没有太多代码,但下面是它的外观:

-(IBAction)showMessage:id(sender){
     NSLog(@"test: %@", self.secTitle);
}

-(IBAction)closeMessage:id(sender){
    [self dismissViewControllerAnimated:YES completion:nil];
}
此外,我还注意到,当我使用SecondViewController上的dismissViewControllerAnimated关闭它并返回MainViewController时,在显示主视图之前,会显示几秒钟的黑色空屏幕,并且不再检测到MainViewController上的触摸事件

请帮助。

试试这个:

SecondViewController *view2 = (SecondViewsController *)[storyboard instantiateViewControllerWithIdentifier:@"PushToNext"];
view2.secTitle = self.MainTitle;
UINavigationController *nav = [[UINavigationController alloc]initWithRootViewController:view2];
[nav setModalPresentationStyle: UIModalPresentationCurrentContext];
[self setModalPresentationStyle:UIModalPresentationCurrentContext];
试试这个:

SecondViewController *view2 = (SecondViewsController *)[storyboard instantiateViewControllerWithIdentifier:@"PushToNext"];
view2.secTitle = self.MainTitle;
UINavigationController *nav = [[UINavigationController alloc]initWithRootViewController:view2];
[nav setModalPresentationStyle: UIModalPresentationCurrentContext];
[self setModalPresentationStyle:UIModalPresentationCurrentContext];

您能使用PerformsguewithIdentifier和Prepareforsgue吗?如果您的故事板中有视图,并在它们之间设置了一个分段,为其提供一个标识符并将样式设置为模态,则您应该能够执行以下操作:

-(IBAction)shareToSocial:(id)sender {
    [self performSegueWithIdentifier:@"modelToNextSegue" sender:self];
}
然后在prepareForSegue方法中传递值:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    SecondViewController *view2 = [segue destinationViewController];
    view2.secTitle = self.MainTitle;
}

您能使用PerformsguewithIdentifier和Prepareforsgue吗?如果您的故事板中有视图,并在它们之间设置了一个分段,为其提供一个标识符并将样式设置为模态,则您应该能够执行以下操作:

-(IBAction)shareToSocial:(id)sender {
    [self performSegueWithIdentifier:@"modelToNextSegue" sender:self];
}
然后在prepareForSegue方法中传递值:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    SecondViewController *view2 = [segue destinationViewController];
    view2.secTitle = self.MainTitle;
}

在您发布的代码中,您没有在任何地方显示第二个VC。使用此代码,您将字符串本身传递给您的SecondViewController。你试过传递值吗
view2.secTitle=[nsstringwithstring:self.mainttitle]
还没有。我试试看。试过了,第二次仍然返回空值view@DmitryShevchenko,在我的SecondViewController上没有太多代码可显示,因为我还没有让它正常工作,但我还是添加了它。您没有在使用此代码发布的代码中显示您的第二个VC,您正在将字符串本身传递给SecondViewController。你试过传递值吗
view2.secTitle=[nsstringwithstring:self.mainttitle]
还没有。我试试看。试过了,第二次仍然返回空值view@DmitryShevchenko,在我的SecondViewController上没有太多代码显示,因为我还没有让它正常工作,但我还是添加了它。