我有两节课。首先下载数据图像并将它们一个接一个地添加到数组中。当它完成所有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
不显示任何内容。有什么想法吗?
答案 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文件,在该文件中声明此数组并直接使用它而不创建任何对象...
希望这可以帮助你...