将数组从NSObject传递到View Controller

时间:2011-07-12 15:57:56

标签: iphone objective-c ios xcode

我是Objective-C的新手。我正在将数组从NSObject传递给视图控制器(不是我的根)。 NS对象文件,以数组poolArray结束。 我也在void(dealloc)中使用了self.poolArray = nil;。将此传递给我的视图控制器时,我必须采取哪些步骤?

编辑:为了更具体地说明我的事业,如果我只是处理两个视图控制器怎么办?

-(void)createData {
    //poolFixtures being the text within each cell of my table view.
    NSMutableArray *poolFixtures; 

    groupSections=[[NSMutableArray alloc] initWithObjects: @"Pool Stages", nil]

    poolFixtures=[[NSMutableArray alloc] init];


    [poolFixtures addObject:[[NSMutableDictionary alloc]
     initWithObjectsAndKeys:@"This is a name",@"name",nil]];

    fixtureData=[[NSMutableArray alloc] initWithObjects: poolFixtures, nil];

    [poolFixtures release];
}

我为第二个视图控制器设置了类似的设置。但是,第二个所需的标题要求我从html文件下载数据,将它们解析为我想要的格式等。在第二个视图控制器中使用它需要很长时间(我假设因为html加载时间) 。我想要完成的事情(我认为我可以用NSobject做什么),一旦用户打开应用程序就开始数据收集;因此,当用户到达第二个视图控制器时,它已加载并准备就绪。

因此我想知道我是否可以在根视图控制器中进行下载和解析,并将数组发送到第二个视图控制器以便在需要时使用。我以为我可以使用root实现的createData部分来实现。

2 个答案:

答案 0 :(得分:1)

为此,我的建议是实现委托方法。我想你了解目标C中的协议。More info about delegate pattern

要做的步骤。 1.启动应用程序后,视图控制器设置委托并开始下载后台线程。 2.下载完成后,将通过委托方法设置下载的数据。

希望你能明白我的意思。有任何疑问,请在此发布。

答案 1 :(得分:0)

我可能会误解你,但这就是你通常做的事情....

Object obj = [[Object alloc] init];
ViewController *vc = [[ViewController alloc] initWithNibName:@"NibName" bundle:nil];
// this is a public property of the viewcontroller
vc.array = [object methodThatReturnsArray]; 
[self.navigationController pushViewController:vc];

这就是theThatReturnsArray方法的样子

-(NSArray *)methodThatReturnsArray
{
   NSArray* array = [[[NSArray alloc] init] autorelease];
   // some code here that adds to the usefulness of the array
   return array;
}