Несколько 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 ни к чему другому без сбоев.

3 ответов


Так что вам нужно как-то сказать этим двоим tableViewS Отдельно--вы можете либо установить свойство "tag" в разные значения, либо иметь свойство на контроллере представления, которое указывает на каждый вид

@property (nonatomic, retain) IBOutlet UITableView *tableView1;
@property (nonatomic, retain) IBOutlet UITableView *tableView2;

затем подключите их к каждому представлению в interface builder...

тогда в ваших методах контроллера вида вы можете сделать

(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
    }
}

вероятно, самый простой способ реализовать это-иметь два класса делегатов и источников данных, по одному для каждого представления таблицы. Это уменьшило бы количество вхождений if (tableview == tableview1) в коде контроллера представления.


этот пример кода может помочь вам...