从不同的视图控制器访问数组

时间:2014-09-02 03:48:00

标签: ios iphone arrays xcode

我有两节课。首先下载数据图像并将它们一个接一个地添加到数组中。当它完成所有16个操作时,会执行操作以将视图切换到第二个视图。我的问题是如何从第二类的第一类访问数组?

以下是代码:

first.h

@interface first{
    NSMutableArray *imagesArray;
}
@property(nonatomic,retain)NSMutableArray *imagesArray;

(数组在.m文件中合成)

second.h

#import"second";
#import"first.h"

second.m

-(void) viewdidload {
    first *another = [[another alloc] init];
    label.text =  [NSString stringWithFromat:@"%i",[another.imagesArray count]];
    imageView.image = [another.imagesArray objectAtIndex:0];
}

label显示0,imageView不显示任何内容。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

请充分了解面向对象的功能和Objective-C中的对象通信

不要创建first类的新实例。这将创建一个新的first内存对象。

您必须访问在现有imagesArray类中创建的现有first类对象。

要执行此操作,请在NSMutableArray中将second.m属性声明为weak,并在分配first.m时从second.m班级分配。

示例:

@interface second {

    NSMutableArray *parentImagesArray;
}

@property(nonatomic, weak)NSMutableArray *parentImagesArray;

first.m

您的first.m文件中将包含类似的代码

second *secondView = [[second alloc] init];
secondView.parentImagesArray = self.imagesArray; //assign the weak property.

<强> second.m

label.text =  [NSString stringWithFromat:@"%i",[self.parentImagesArray count]];
imageView.image = parentImagesArray objectAtIndex:0];

答案 1 :(得分:0)

实现目标有两种方法......

1)FIRST(从第一个控制器传递数组到第二个控制器)

在第二个controller.h中创建数组对象    然后

从您呈现第二个控制器的第一个控制器

second.array_object = first.array_name;

通过这种方式,您可以在第二个控制器中获得数组...

2)将数组声明为全局

Declare array before import statement.
in first.h file

NSMutableArray *arr1;
#import<UIKit/UIKit.h>

现在随时随地使用此数组导入.h文件,在该文件中声明此数组并直接使用它而不创建任何对象...

希望这可以帮助你...