在视图控制器之间传递数组?

我真的需要一些帮助! 我试图将数组从一个视图控制器传递到另一个视图控制器。我认为后者是一个“孩子”视图控制器? 我的代码如下: MainViewController.h:
#import <UIKit/UIKit.h>
#import <AudioToolbox/AudioToolbox.h>
#import <AVFoundation/AVFoundation.h>

@interface HelloWorldIOS4ViewController : UIViewController <UITableViewDelegate, UITableViewDataSource, UITextFieldDelegate, AVAudioPlayerDelegate> {
    NSMutableArray  *countProductCode;
    UIPopoverController *detailViewPopover;
}

@property (nonatomic, retain) NSMutableArray  *countProductCode;

@property (nonatomic, retain) UIPopoverController *detailViewPopover;

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data;
...
@end
MainViewController.m
#import "HelloWorldIOS4ViewController.h"
#import "JSON.h"
#import "PopoverContentViewController.h"

@implementation HelloWorldIOS4ViewController

@synthesize detailViewPopover;
@synthesize countProductCode;

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data 
{
    NSString *jsonString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

    NSDictionary *results = [jsonString JSONValue];
    NSLog(@"RETURN: %@", results);

    [countProductCode removeAllObjects];

    NSArray *products = [results objectForKey:@"items"];

    for (NSDictionary *row in products)
    {
        NSString *code = [row objectForKey:@"ic"];
        [countProductCode addObject:code];
    }

    PopoverContentViewController.countProductCodes = countProductCode;
}       
PopoverViewController.h:
@interface PopoverContentViewController : UITableViewController {
    NSMutableArray  *countProductCodes;
}
@property (nonatomic, retain) NSMutableArray  *countProductCodes;
@end
PopoverViewController.m:
#import "PopoverContentViewController.h"
#import "HelloWorldIOS4ViewController.h"

@implementation PopoverContentViewController

@synthesize countProductCodes;
...
我已经削减了很多,但我知道从一堆NSLog的点缀我得到数据等,但我不能将数组
countProductCode
传递给
PopoverViewController's
countProductCodes
数组。 我一直在   “访问未知的'setCountProductCodes:'类方法” 错误。 这可能是我正在做的非常愚蠢的事情,但这让我发疯! 有人可以帮忙吗? 谢谢 詹姆士     
已邀请:
亲爱的詹姆斯, 我想你想仔细看看模型 - 视图 - 控制器范例。在你的应用程序中,你正试图实现某种“超级”。让我解释一下这意味着什么: 在显然是控制器的MainViewController类中,还实现了模型的某些部分。这是一个坏主意,但在开始时是一个非常普遍的想法。也许我误解了你的设计,但这是我将如何实现它: 模型I将实现一个合适的模型对象,在你的情况下,就像一个自定义的
NSObject
子类一样简单,
NSMutableArray
作为属性。此外,该模型将具有用于从互联网上检索数据的方法。这是对的:在模型中进行网络连接。您必须使用
- (void) refreshProductCode
等方法从控制器调用。如果你想得到真正的花哨,使用
NSOperation
来封装下载(然后你将使用
NSURLConnection
的同步变体,因为操作本身已经异步执行了)如果解析JSON字符串需要那么好更长,这也是在后台执行,您的用户界面将保持响应。 所以现在模型正在下载你的东西 - 很棒,但我怎么知道什么时候完成?那么一旦完成,你就会从模型中发布通知。如果下载失败怎么办?您猜对了:发布失败的通知。 控制器需要显示模型数据的控制器首先获取模型对象。在这种情况下,模型对象是AppController上的属性。然后控制器具有该模型对象的属性并保留它,以便模型对象在控制器存在时不会消失。然后控制器还注册模型的通知。那么典型的下载工作怎么样呢? 获取模型对象的实例 在模型对象上调用
-(void) refreshProductCode
在状态栏中显示网络活动微调器并等待通知 当通知进入时,成功刷新UI并在失败时重新开始下载或向用户显示注释。同时禁用网络活动微调器。 如何在视图控制器之间移动数据?视图控制器应该像黑手党一样操作:每个视图控制器都在需要知道的基础上工作。例如,如果您希望视图控制器显示产品的详细信息,则不会将包含所有产品的模型传递给控制器​​。相反,你会在详细视图控制器上有一个实例变量,它只包含一个生产模型对象,它包含描述文本,照片等所有信息。如果你想在你的应用程序中再次显示产品信息,那么你很酷可以重用该视图控制器,因为它只需要一个产品模型对象来完成它的工作。     
在你的代码中:
PopoverContentViewController.countProductCodes = countProductCode;
应该:
popoverContentViewController.countProductCodes = countProductCode;
您的实例名称应与类名称不同。     
在mainViewController类中,在以下方法中
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data 
您正在使用类名访问“countProductCodes”。您应该使用其对象访问。 喜欢
PopoverContentViewController *obj = [[PopoverContentViewController alloc] init];
obj.countProductCodes = countProductCodes;
    
在MainViewController.h中:
+(NSMutableArray)arrayRes;
在MainViewController.m中
+(NSMutableArray)arrayRes{
return countProductCode;
}
通常在countProductCode数组上执行任何代码更改 在PopoverViewController.m中 声明
@class MainViewController;
并在viewDidLoad中
NSMutableArray *newArray;
newArray = [MainViewController arrayRes];
    

要回复问题请先登录注册