如何在模态视图控制器之间传递数据

时间:2012-07-12 12:27:32

标签: objective-c xcode

这是一个noob问题。我想要的是将数据从我的QuizView控制器传递到QuizModalViewController.i成功创建了一个普通的模态视图控制器,但在两者之间传递数据时遇到问题。下面是我的代码。

QuizViewController

-(IBAction)button3Clicked:(id)sender
{
  QuizModalViewController *mvid=[[QuizModalViewController alloc]initWithNibName:@"QuizModalViewController" bundle:nil];
mvid.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:mvid animated:YES];
}

QuizModalViewController

- (IBAction)goBackToView
{
[self dismissModalViewControllerAnimated:YES];
//[controller loadQuestion:currentQuestionIndex+1];
}

3 个答案:

答案 0 :(得分:4)

-(IBAction)button3Clicked:(id)sender
{
  QuizModalViewController *mvid=[[QuizModalViewController alloc]initWithNibName:@"QuizModalViewController" bundle:nil];
mvid.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
mvid.theDataYouWantToPass = theData; // this is how you do it
[self presentModalViewController:mvid animated:YES];
}

请注意,theDataYouWantToPass必须是QuizModalViewController.h文件中声明的属性。

答案 1 :(得分:2)

您还可以使用 - (void)prepareForSegue:... - 在控制器之间共享数据的方法。

例如:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{

   if ([segue.identifier isEqualToString:@"Your_Identifier"]) {

     TestViewController *controller = [segue destinationViewController];

     NSArray *array = [[NSArray alloc] initWithObjects:@"",nil];

     controller.objectInTestViewController = array;

   }
}

希望这有助于某人......

答案 2 :(得分:0)

在类范围内使QuizModalViewController可用,而不是使用局部变量。 然后在goBackToView:中,您可以在解除控制器之前访问控制器的内容。

顺便说一下:在您的代码中,您正在泄漏mvid。在以模态方式呈现它之后将其释放。