#xcode4
#xcode4
Вопрос:
Я хотел бы использовать NavigationController для создания нескольких уровней UITableViews. Я начинаю с RootViewController, созданного Xcode для нового проекта NavigationController, в котором отображается таблица, и я могу выбрать строку, которая помещается в стек навигации, чтобы отобразить другую таблицу, используя FirstTable.xib и связанные файлы. Когда я затем выбираю строку в этой таблице, я снова нажимаю на стек навигации, чтобы отобразить третью таблицу (SecondTable.xib), но на этом этапе отображаются только пустые ячейки. Очевидно, мне не хватает чего-то, что заставит эту навигацию работать должным образом. Есть идеи?
Вот базовая структура, которую я использую для кода на уровнях ниже RootViewController с опущенными очевидными битами, например, cellForRowAtIndexPath метод
@interface FirstTable : UITableViewController {
NSArray *firstList;
}
@property (nonatomic, retain) NSArray *firstList;
@implementation FirstTable
@synthesize firstList;
- (id)initWithStyle:(UITableViewStyle)style
{
self = [super initWithStyle:style];
if (self) {
self.title = @"First Table View";
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
firstList = [[NSMutableArray alloc] initWithObjects:
@"Clubs amp; officials",
@"Grade",
nil];
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewController *secondView = [[UITableViewController alloc] initWithNibName:@"SecondTable" bundle:nil];
[self.navigationController pushViewController:secondView animated:YES];
[secondView release];
}
Ответ №1:
Хорошо, похоже, что ответ заключается в использовании этого кода чуть выше нажатия ViewController
UITableViewController *secondView = [[NSClassFromString(@"SecondTable") alloc] initWithNibName:@"SecondTable" bundle:nil];
Я предполагаю, что я не создавал экземпляр класса из создания UITableViewController для второй таблицы. Но тогда почему исходная версия работает для первой таблицы, то есть той, которая вызывается RootViewController ?