Я хотел бы отобразить 2 UItableView
на том же UIView
.Важная вещь: когда я выбираю строку в первой таблице (master
), я хочу отобразить строки подробностей во второй таблице (detail
).
Для этого у меня есть:
- создано 1
UIViewController
с 2 UITableView
свойствами IB Outlet, связанными с 2 таблицами в раскадровке - установить делегат и источник данных для обоих
UITableView
в корне UIViewController
- создано 1
UITableViewController
для каждого UITableView
- реализованы все необходимые методы для обоих делегатов
Мне удается отобразить данные в первой таблице, но не во второй, хотя tableView:numberOfRowsInSection:
правильно для двух таблиц.
Когда я запускаю свое приложение в режиме отладки, я не вижу никакого вызова tableView:cellForRowAtIndexPath:
метод для таблицы с подробностями.
Я не понимаю, что я пропустил или где я не прав.Кто-нибудь может мне помочь?
Вот части моего кода:
RootViewController.h
@interface RootViewController : UIViewController
{
MasterTVController * masterController;
IBOutlet UITableView * masterTV;
IBOutlet UITableView * detailTV;
}
RootViewController.m
-(void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
if (masterController == nil) {
masterController = [[masterTVController alloc] init];
}
[masterTV setDataSource:masterController];
[masterTV setDelegate:masterController];
masterController.view = masterController.tableView;
[detailTV setDataSource:masterController.detailTVController];
[detailTV setDelegate:masterController.detailTVController];
}
MasterTVController.ч
@interface MasterTVController : UITableViewController <UITableViewDataSource, UITableViewDelegate>
{
NSMutableArray * masterArray;
NSMutableArray * detailArray;
DetailTVController * detailTVController;
}
MasterTVController.m
- (id)initWithStyle:(UITableViewStyle)style
{
self = [super initWithStyle:style];
if (self) {
self.detailTVController = [[DetailTVController alloc] init];
self.detailTVController.view = self.detailTVController.tableView;
}
return self;
}
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
self.detailArray = [[self.masterArray objectAtIndex:indexPath.row] objectForKey:@"details"];
self.detailTVController.dataArray = detailArray;
[self.detailTVController.tableView reloadData];
}