2010-10-19 2 views
0

Это небольшой проект, над которым я работаю для удовольствия.

Я начинаю инициализацией сПриложение для 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; 

}

+1

Попробуйте опубликовать обратную трассу, показывающую, где именно возникает проблема – Jacques

+0

Добавил это в редактирование. – Inanepenguin

+0

Какая авария вы видите? Я также хотел бы отметить, что гораздо более универсально сравнивать секцию и строку indexPath вместо содержимого ярлыков, потому что в приложении для доставки вы будете иметь локализованные или даже настраиваемые пользователем метки. – Costique

ответ

0

Там нет ничего плохого в том непристойно код, который вы вывешенный. Поэтому ваша проблема может быть где-то в MoonViewController. Можете ли вы опубликовать методы tableView?

  • (NSInteger) numberOfSectionsInTableView: (UITableView *) Tableview
  • (UITableViewCell *) Tableview: (UITableView *) Tableview cellForRowAtIndexPath: (NSIndexPath *) indexPath
+0

Добавлено edit2. Это функции. – Inanepenguin

+0

Ну что-то у вас чего-то не хватает, но я не могу сказать из кода, который вы опубликовали. Было бы полезно, если бы вы перешли через код, чтобы узнать, где именно он сбой. Позвольте мне знать, что произойдет после того, как вы это сделали. – Jordan

+0

Crud, извините, я тоже хотел это сказать. Когда я нажимаю кнопку «Земля» (приложение начинается с представления таблицы с 3 ячейками, «Земля», «Марс» и «Плутон»). Он выходит из строя, и режим отладки указывает на строку, которую я опубликовал (оператор if). Если есть дополнительная информация, которую я могу предоставить через Xcode (отчет о сбое или что-то еще), дайте мне знать. – Inanepenguin

0

Это не решит проблему , но счет не является свойством. Он работает, но вместо этого вы должны использовать [planetList count].

Кроме того, я не думаю, что вам нужно действительно посмотреть на значение textLabel.text. Вы можете просто проверить свой массив:

if([[moonArray objectAtIndex: indexPath.row] isEqualToString:@"Earth"])