Несколько UITableViews на одном UIView
Мне нужно иметь два UITableViews на одном UIView. Я могу заставить его работать с одним, вот код:
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return [contentOne count]; // sets row count to number of items in array
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
}
NSString *firstValue = [[NSString alloc] initWithFormat: @"Row %i% %", indexPath.row+1 ];
NSString *secondValue = [contentOne objectAtIndex:indexPath.row];
NSString *cellValue = [firstValue stringByAppendingString: secondValue]; // appends two strings
[cell.textLabel setText:cellValue];
return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
}
Я пробовал несколько разных методов. Кто угодно? Если бы я мог назвать каждый UITableView другим именем, которое должно это сделать, но это не позволит мне редактировать tableView ни к чему другому без сбоев.
Ответы
Ответ 1
так что вам нужно каким-то образом рассказать обо всех tableView
в отдельности - вы можете либо установить свойство тега на разные значения, либо иметь свойство на вашем контроллере представления, указывающее на каждое представление
@property (nonatomic, retain) IBOutlet UITableView *tableView1;
@property (nonatomic, retain) IBOutlet UITableView *tableView2;
затем подключите их к каждому представлению в построителе интерфейса...
то в ваших методах контроллера просмотра вы можете сделать
(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
if (tableView == self.tableView1) {
return 37;
} else if (tableView == self.tableView2) {
return 19;
} else {
// shouldn't get here, use an assert to check for this if you'd like
}
}
Ответ 2
Вероятно, самым простым способом реализации этого является наличие двух классов делегатов и источников данных, по одному для каждого вида таблицы. Это уменьшило бы количество if (tableview == tableview1) в коде контроллера вида.
Ответ 3
Этот пример кода может помочь вам...