从另一个ViewController访问变量

时间:2011-07-01 20:23:20

标签: iphone xcode variables

FirstViewController.h:

#import <UIKit/UIKit.h>

    @interface FirstViewController : UIViewController
    {
    NSArray *listData;
}
-(IBAction) GoToInsert: (id) sender;
@property (nonatomic, retain) NSArray *listData;
@end

FirstViewController.m:

-(IBAction) upisiRezultat:(id)sender
{
    SecondViewController *secondView = [[SecondViewController alloc] initWithNibName: nil bundle: nil];
    [self presentModalViewController: secondView animated: NO];
    [secondView release];
}

- (void)viewDidLoad
{NSArray *array = [[NSArray alloc] initWithObjects:@"236", @"46",
                   @"147", @"8", @"56", @"69", @"114", @"2",
                   @"96", @"518", @"2", @"54", @"236", nil];
    self.listData = array;
    [array release];
    [super viewDidLoad];
}

SecondViewontroller.h

@interface SecondViewController : UIViewController {

}
-(IBAction) insert;
@end

SecondViewontroller.m

-(IBAction) insert
{
    /* Here should be the code to insert some number in listData from FirstViewController */
}

因此当应用程序加载时,它会加载FirstViewController.xib并在屏幕上显示listData数组,当我单击“转到插入”按钮时,将加载另一个视图(SecondViewController.xib),其中包含“插入”按钮,该视图应添加一些数字数组并在第一个视图上显示新数组。

怎么做?

3 个答案:

答案 0 :(得分:0)

您可以使用self.parentViewController访问父视图控制器。因此,沿着这些方面的某些事情(意思是我没有测试过这个 - 你应该)应该有效:

FirstViewController *firstViewController = self.parentViewController;
NSMutableArray *newArray = [[NSMutableArray alloc] initWithArray:firstViewControl.listData];
[newArray addObject:@"42"];
[firstViewController setListData:[NSArray arrayWithArray:newArray]];
[newArray release];

但是,由于您要将对象添加到listArray,因此使用NSMutableArray会更自然。此外,当您看起来更像是要拥有NSString个对象时,您当前正在向数组添加NSNumber s。

答案 1 :(得分:0)

我不知道你是否有imported SecondViewController.h,我想我知道你想要做什么。

答案 2 :(得分:0)

或者,也许更容易,您可以在主AppDelegate中拥有变量。

把:    int myNumber; 在projectname_AppDelegate.h文件中

然后在每个视图控制器中,您可以导入AppDelegate.h文件,然后执行以下操作:

AppDelegate * appDelegate =(AppDelegate *)[[UIApplication sharedApplication] delegate]; 然后阅读或更改:

appDelegate.myNumber

===

这不是你应该一直做的事情(你不希望你的appDelegate成为一个巨大的数据存储库),但它可以在需要时为你提供快速解决方案......