如何将值传递给另一个视图控制器?

时间:2014-04-10 13:23:38

标签: ios objective-c uistoryboardsegue

我是IOS编程的新手。我正在从segue向另一个视图控制器发送一个整数值,如下所示:

SlideShowViewController *destViewController = segue.destinationViewController;
[destViewController setSelectedButton:tagIndex];

我在SlideShowViewController.m文件中成功访问了这个值:

@synthesize selectedButton;

NSLog(@"%i",selectedButton);

现在我想访问在我的其他View Controller中保存在selectedButton中的相同值。所以我在AnotherViewController的viewDidLoad中做了这个:

SlideShowViewController *button= [[SlideShowViewController alloc] init];

NSLog(@"selected button is %i",button.selectedButton);

但我没有在这里获得价值。

3 个答案:

答案 0 :(得分:0)

在上一个代码部分中,您正在创建SlideShowViewController的新实例。此实例与第一个实例的变量不同。要访问selectedButton字段,您需要引用第一个SlideShowViewController实例来访问其属性。

// Here you create a new instance. You need to hang onto the destViewController
// pointer if you want to access its selectedButton property later. This means 
// you'll need to use a global variable, or otherwise expose it in some way for
// future reference.
SlideShowViewController *destViewController = segue.destinationViewController;
[destViewController setSelectedButton:tagIndex];

稍后,可能采用不同的方法,您可以执行以下操作:

// Note, we're referring to destViewController using self. I'm assuming you've
// set up a property on the self object to refer to destViewController outside 
// of the scope of the initial initialization.
int selectedButtonIndex = self.destViewController.selectedButton;

答案 1 :(得分:0)

进入第二个视图控制器时,与第一个视图控制器相同。

SecondViewController *destViewController2 = segue.destinationViewController;
[destViewController2 setSelectedButton:tagIndex];

答案 2 :(得分:0)

在SlideShowViewController.h中创建一个属性来保存数据。 在SlideShowViewController.m中合成属性并删除

SlideShowViewController *button= [[SlideShowViewController alloc] init];

来自SlideShowViewController.m的这一行。在这一行中,您正在创建SlideShowViewController的新实例。