#objective-c #xcode #uitableview
#objective-c #xcode #uitableview
Вопрос:
Эй, ребята, у меня есть табличное представление, отсортированное должным образом, но у меня проблема, все данные в моем табличном представлении открывают один и тот же файл nib, когда я использую этот код:
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
// Return the number of sections.
return 4;
}
// Category
- (NSString *)tableView:(UITableView *)tableView
titleForHeaderInSection:(NSInteger)section {
if (section == 0) return @"In-Site SEO";
if (section == 1) return @"Inside Analysis";
if (section == 2) return @"Ranks N Stuff";
if (section == 3) return @"Server Info";
return @"Other";
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
// Return the number of rows in the section.
if (section == 0) return 7;
if (section == 1) return 3;
if (section == 2) return 6;
if (section == 3) return 5;
return 0;
}
// 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...
NSUInteger row = [indexPath row];
if ( indexPath.section == 1 ) row = 7;
if ( indexPath.section == 2 ) row = 10;
if ( indexPath.section == 3 ) row = 16;
if ( indexPath.section == 4 ) row = 21;
cell.textLabel.text = [glossaryArray objectAtIndex:row];
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
NSInteger row = [indexPath row];
if (self.glossaryDetailViewController == nil) {
GlossaryDetailViewController *aGlossaryDetail = [[GlossaryDetailViewController alloc] initWithNibName:@"GlossaryDetailViewController" bundle:nil];
self.glossaryDetailViewController = aGlossaryDetail;
[aGlossaryDetail release];
}
glossaryDetailViewController.title = [NSString stringWithFormat:@"%@", [glossaryArray objectAtIndex:row]];
NewReferencemoi_caAppDelegate *delegate = (NewReferencemoi_caAppDelegate *)[[UIApplication sharedApplication] delegate];
[delegate.glossaryNavController pushViewController:glossaryDetailViewController animated:YES];
}
- GlossaryDetailViewController — это мой файл реализации, а также я добавил файл nib для этого,
Надеюсь, кто-нибудь сможет мне помочь, как заставить каждые данные открывать свое собственное представление, я действительно не буду возражать, если мне придется создать файл nib для всех моих данных в табличном представлении,
Спасибо
Ответ №1:
Чтобы ввести свой стиль кода, вы можете попробовать
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
NSInteger row = [indexPath row];
NSString *nibName;
if ( indexPath.section == 1 ) nibName = @"firstNib";
if ( indexPath.section == 2 ) nibName = @"secondNib";
if ( indexPath.section == 3 ) nibName = @"thirdNib";
if ( indexPath.section == 4 ) nibName = @"fourthNib";
GlossaryDetailViewController *aGlossaryDetail = [[GlossaryDetailViewController alloc] initWithNibName:nibName bundle:nil];
self.glossaryDetailViewController = aGlossaryDetail;
[aGlossaryDetail release];
glossaryDetailViewController.title = [NSString stringWithFormat:@"%@", [glossaryArray objectAtIndex:row]];
NewReferencemoi_caAppDelegate *delegate = (NewReferencemoi_caAppDelegate *)[[UIApplication sharedApplication] delegate];
[delegate.glossaryNavController pushViewController:glossaryDetailViewController animated:YES];
}
Комментарии:
1. эй, спасибо, я собираюсь попробовать это сейчас, но я хотел бы знать, что такое nibName?
2. nibName — это имя, которое вы используете для инициализатора
initWithNibName
UIViewController. Это файлы xib interface builder. Взгляните на руководство Apple по программированию ресурсов3. привет, у меня возникли проблемы при попытке собрать кусочки воедино, я просматривал Руководство по программированию ресурсов, затем я внедрил ваш код, но он сразу же разбился, я не уверен, работает ли ваш код. Если все в порядке, я хочу указать на некоторые вещи, которых я не понимаю. indexPath.section, я не думаю, что мне нужен по 1 файлу с наконечником для каждой категории, в моем .plist у меня есть 21 данные, и я пытаюсь сказать, что когда у меня есть 21 данные в моем списке, я хочу 21 файл с наконечником, каждый наконечник открывает свои собственные данные, потому что у каждого данные в моем .plist будут отличаться от других (извините за мой плохой английский)
4. Для этого
if ( indexPath.section == 1 ) nibName = @"firstNib";
и предназначен. Чтобы определить, на основе раздела, какой вид выбран, откройте с помощью one ViewController. Сбросьте, пожалуйста, сообщение об ошибке консоли.