我正在创建一个使用webService以JSON格式获取数据的应用程序...我将数据解析为对象NSArray ...我使用它...它工作正常...
现在,如果用户点击一个按钮,我需要将他发送到另一个Uiview ...其中包含有关被点击对象的更多数据..
问题在这里......我不想再次请求并从服务器下载结果...因为我已经做了...我想要的就是访问我在第一个UIViewController中的NSArray。
答案 0 :(得分:1)
您可以在AnotherView.h上添加另一个属性:
@property (nonatomic, retain) NSArray *jsonData;
在AnotherView.m上合成它。当您打算从InitialView调用AnotherView时,可以使用在InitialView上检索的数据设置jsonData。
答案 1 :(得分: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];
你去。
答案 2 :(得分:0)
您可以将数组设置为属性。您可以创建一个新类并将该数组设置为该属性,并在获取该数组后设置该属性。或者,您可以创建现有UIVIewController类的属性并传递该对象。
无论哪种方式,你都必须设置属性。
答案 3 :(得分:0)
您可以在第二个ViewController中定义一个新属性,该属性包含NSArray并在显示之前将firt数组传递给第二个ViewController。
答案 4 :(得分:0)
您还没有概述是向前还是向后发送数据。在后一种情况下,您将需要实现协议和委托(定义您自己的协议),但对于先前的情况,您只需要在任何其他类中创建要访问的Object的属性。对于Web服务,如果您遵守MVC体系结构的规范,最好使用协议和委托。