-1

我正在制作一个应用程序,它使用 webService 来获取 JSON 格式的数据......我得到了我将它们解析成对象 NSArray 的数据......我使用它......它工作正常......
现在,如果用户单击一个按钮我需要将他发送到另一个 Uiview ...其中包含有关单击对象的更多数据..
问题就在这里...我不想再次请求并从服务器下载结果...因为我已经这样做了……我想要的只是访问我在第一个 UIViewController 中拥有的 NSArray。

4

5 回答 5

1

您可以在 AnotherView.h 上添加另一个属性:

@property (nonatomic, retain) NSArray *jsonData;

在 AnotherView.m 上合成它。当您要从 InitialView 调用 AnotherView 时,您可以使用您在 InitialView 上检索到的数据设置 jsonData。

于 2012-05-11T08:15:24.947 回答
0

您可以将数组设置为属性。您可以创建一个新类并将数组设置为属性,然后在获取数组后设置属性。或者,您可以创建现有 UIVIewController 类的属性并传递对象。

无论哪种方式,您都必须设置属性。

于 2012-05-11T08:20:35.137 回答
0

在您的其他视图控制器中创建一个自定义初始化程序,如下所示:

#import <UIKit/UIKit.h>

@interface OtherViewController : UIViewController 

@property (nonatomic, strong) NSArray *myArray;

- (id)initWithArray:(NSArray *)anArray;

@end

然后像这样实现它:

#import "OtherViewController.h"

@implementation OtherViewController
@synthesize myArray=_myArray;

- (id)initWithArray:(NSArray *)anArray {
    if (!(self = [self initWithNibName:@"OtherViewController" bundle:nil]))
        return nil;

    if (!anArray) {
        @throw [NSException exceptionWithName:@"OtherViewControllerBadInitCall" reason:@"array is nil" userInfo:nil];
    }

    _myArray = anArray;


    return self;
}

//...
@end

然后您可以像这样初始化并显示您的控制器:

OtherViewController *otherViewController = [[OtherViewController alloc] initWithArray:greatJSONArray];
[self.navigationController pushViewController:otherViewController animated:YES];

你去吧。

于 2012-05-11T08:17:02.917 回答
0

好吧,您还没有概述是向前还是向后发送数据。在后一种情况下,您将需要实现协议和委托(定义您自己的协议),但对于前一种情况,您只需要创建要在任何其他类中访问的对象的属性。在 Web 服务的情况下,如果您遵守 MVC 架构的规范,最好使用协议和委托。

于 2012-05-11T08:34:50.867 回答
0

您可以在第二个 ViewController 中定义一个包含 NSArray 的新属性,并在显示之前将第一个数组传递给第二个 ViewController。

于 2012-05-11T08:29:35.403 回答