Подтвердить что ты не робот

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

4b9b3361

Ответ 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) в коде контроллера вида.