【发布时间】:2011-06-29 14:16:26
【问题描述】:
我在 "HeroListViewController" 中创建了 NSMutale 数组。我想在另一个 viewController 中使用它,即 MapTutorialViewController。我试过这样。
在 HeroListViewController.h 中
MapTutorialViewController *maptutorialcontroller;
NSMutableArray *listData;
设置属性并正确合成
在 HeroListViewController.m 中
- (void)viewDidLoad {
[super viewDidLoad];
listData = [[NSMutableArray alloc] init];
}
- (UITableViewCell *)tableView:(UITableView *)theTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *HeroTableViewCell = @"HeroTableViewCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:HeroTableViewCell];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:HeroTableViewCell] autorelease];
}
NSManagedObject *oneHero = [self.fetchedResultsController objectAtIndexPath:indexPath];
NSInteger tab = [tabBar.items indexOfObject:tabBar.selectedItem];
switch (tab) {
case kByName:
cell.textLabel.text = [oneHero valueForKey:@"name"];
cell.detailTextLabel.text = [oneHero valueForKey:@"secretIdentity"];
break;
case kBySecretIdentity:
cell.detailTextLabel.text = [oneHero valueForKey:@"name"];
cell.textLabel.text = [oneHero valueForKey:@"secretIdentity"];
default:
break;
}
[listData addObject: [oneHero valueForKey:@"secretIdentity"]];
count=[listData count];
printf("No of items of listData:%u\n", count);
if(maptutorialcontroller==nil){
maptutorialcontroller= [[MapTutorialViewController alloc]initWithNibName:@"MapTutorialViewController" bundle:nil];
maptutorialcontroller.secondarray=listData;
}
count=[maptutorialcontroller.secondarray count];
printf("No of items of seconarray :%u\n", count);
return cell;
}
输出: listData 的项目数:3 seconarray 的项目数:3 // 两者都是正确的
但是我遇到的问题是,当我尝试像这样在“MapTutorialViewController”中使用第二个数组时, 在 MapTutorialViewController.h 中
HeroListViewController *heroviewcontroller;
NSMutableArray *secondarray;
设置属性并正确合成
在 MapTutorialViewController.m 中
- (void)viewDidLoad
{
heroviewcontroller = [[HeroListViewController alloc]initWithNibName:@"HeroListViewController" bundle:nil];
self.secondarray=[heroviewcontroller.listData mutableCopy];
//secondarray= heroviewcontroller.listData;
int count;
count = [secondarray count];
//
printf("No of items of secondarray from MapTutorialViewContriller :%u\n", count);
}
输出:来自 MapTutorialViewContriller 的 secondarray 的项目数:0
为什么是 0
我的代码有什么问题,请帮助我
【问题讨论】:
-
它不能像以前那样完成,因为当你分配初始化一个视图控制器时,只有当你在 HeroListViewController 的 init 函数中初始化它们时,它的所有字段都是空的
标签: objective-c ios iphone-sdk-3.0 uiviewcontroller nsmutablearray