iPhone SDK:如何将ViewController中的值数组传递给其他ViewController?

时间:2011-02-22 10:21:53

标签: iphone objective-c cocoa-touch ios4 nsmutablearray

我尝试在SecondViewController中创建如下方法:

-(void)setValue:(NSMutableArray*)array
 { 
      //NSMutableArray *newArray = [[NSMutableArray alloc] init];
      newArray = [array retain];
 }

并使用名为second FirstViewController的对象从SecondViewController传递值:

[second setValue:existingArray];

existingArray是一个NSMutableArray。

可能出现什么问题?

2 个答案:

答案 0 :(得分:3)

在代码中,您已将数组设置为second的“SecondViewController”对象。

所以你需要使用该对象来显示SecondeViewController,否则它将不会显示数组。

检查以下代码。

 //   In the FirstViewController

- (void)buttonClicked:(id)sender{

    SecondViewController *second = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle: nil];
 [second setValue:existingArray];
 [self.navigationController pushViewController:second animated:YES];
 [second release];

}

在代码中,我将数据分配给“second”对象中的数组,并且我正在使用该对象来显示控制器。

此致

Satya

答案 1 :(得分:0)

您可以使用属性而不是您在那里的setter(看起来很糟糕)。问题是你真的需要在数组上做一个副本还是保留就足够了?

在SecondViewController中创建一个NSMutableArray * myArray作为局部变量。添加属性@property(nonatomic,retain)NSMutableArray * myArray;在界面中。

合成它并设置它只需调用[mySecondViewController setMyArray:newArray];

如果你已经正确地实例化了SecondViewController,并且你想要发送的数组不是nil那么它应该可以工作。

如果你这样做:

-(void)setValue:(NSMutableArray*)array
 { 
      NSMutableArray *newArray = [[NSMutableArray alloc] init];
      newArray = [array mutableCopy];
 }

newArray是在SetValue方法中声明的变量,在程序退出setValue方法后,newArray变量将不再可访问。你也泄漏了内存,因为永远不会释放newArray。