这是一个我正在努力工作的小方案。
我首先用
- (void)viewDidLoad {
[super viewDidLoad];
rootArray = [[NSMutableArray alloc] initWithObjects:@"Earth",@"Mars",@"Pluto",nil];
moonArray = [[NSMutableArray alloc] initWithObjects:@"Clavius",@"Galileo",@"Ptolamy",nil];
marsArray = [[NSMutableArray alloc] initWithObjects:@"Phobos",@"Delmos",nil];
plutoArray = [[NSMutableArray alloc] initWithObjects:@"Charon",@"Nix",@"Hydra",nil];
self.planetList = rootArray
我只创建5个数组,用rootArray初始化planetList。从那里,我希望使用这些下一个数组来创建表视图。应用程序启动时,planetList将成为主列表,其他3将成为下一个视图调用的数组。所以,我有一些代码来处理这个事件:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
MoonViewController *myMoonViews = [[MoonViewController alloc] initWithNibName:@"MoonViewController" bundle:nil];
UITableViewCell *targetCell = [tableView cellForRowAtIndexPath:indexPath];
if([targetCell.textLabel.text isEqualToString:@"Earth"])
{
myMoonViews.planetList = moonArray;
myMoonViews.title = @"First Title";
}
else if([targetCell.textLabel.text isEqualToString:@"Mars"])
{
myMoonViews.planetList = marsArray;
myMoonViews.title = @"Second Title";
}
else if([targetCell.textLabel.text isEqualToString:@"Pluto"])
{
myMoonViews.planetList = plutoArray;
myMoonViews.title = @"Third Title";
}
// ...
// Pass the selected object to the new view controller.
[self.navigationController pushViewController:myMoonViews animated:YES];
[myMoonViews release];
}
我有另一个文件,下一个视图,MoonViewController,它使用我原来的ViewController中的相同代码(工作正常)。但是我不知道我哪里出错了。
附注:
非常感谢您的帮助!
EDIT1:对不起我绝对应该想到这个。错误是第二个代码块的这一行:
if([targetCell.textLabel.text isEqualToString:@"Earth"])
EDIT2:MoonViewController.m功能:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return planetList.count;
}
// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}
// Configure the cell.
cell.textLabel.text = [planetList objectAtIndex: indexPath.row];
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
return cell;
}
答案 0 :(得分:0)
您发布的代码没有任何严重错误。因此,你的问题可能在MoonViewController的某个地方。你可以发布tableView方法吗?
答案 1 :(得分:0)
这不会解决您的问题,但计数不是属性。它可以工作,但实际上你应该使用[planetList count]。
另外,我认为您不需要实际查看textLabel.text的值。您只需检查您的阵列:
if([[moonArray objectAtIndex: indexPath.row] isEqualToString:@"Earth"])