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