【问题标题】:Accessing array from different view controller从不同的视图控制器访问数组
【发布时间】:2014-09-02 03:47:59
【问题描述】:

我有两节课。第一个下载数据图像并将它们一个接一个地添加到数组中。当所有 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 什么也不显示。有什么想法吗?

【问题讨论】:

标签: ios iphone arrays xcode


【解决方案1】:

请好好理解Objective-C中的面向对象特性和对象通信

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

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

为此,请在您的second.m 中将NSMutableArray 属性声明为weak,并在分配second.m 时从first.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];

【讨论】:

    【解决方案2】:

    有两种方法可以实现您的目标...

    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文件,你声明这个数组并直接使用它而不创建任何对象...

    希望对你有帮助...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多