Это небольшой проект, над которым я работаю для удовольствия.
Я начинаю инициализацией сПриложение для iPhone падает при сравнении cell.textlabel.text со строкой
- (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 массивов, инициализация planetList с rootArray. Оттуда я хочу использовать следующие массивы для создания табличных представлений. 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 (который работает просто отлично). Однако я не знаю, где я ошибаюсь.
Боковые Примечания:
- planetList является NSMutableArray
- Я не уверен, что положить в viewDidLoad моего MoonViewController.m (Если это гигантская проблема, которую я не сказал, что, когда я был учили этому.)
- Если есть больше кода, который необходимо увидеть, я поставлю.
Благодарим за помощь!
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;
}
Попробуйте опубликовать обратную трассу, показывающую, где именно возникает проблема – Jacques
Добавил это в редактирование. – Inanepenguin
Какая авария вы видите? Я также хотел бы отметить, что гораздо более универсально сравнивать секцию и строку indexPath вместо содержимого ярлыков, потому что в приложении для доставки вы будете иметь локализованные или даже настраиваемые пользователем метки. – Costique