Как создать UITableView как GRID в ландшафтном режиме? - PullRequest
0 голосов
/ 10 октября 2011

Я хочу создать uitableview как это изображение.загрузка данных с сервера и присвоение значений столбцам строки.Я видел ссылку стека, но мне это не помогло. ОБНОВЛЕНИЕ Мой код: -

#pragma mark UITableViewDelegate methods

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger) section {
    return [modelArray count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = nil;
    static NSString *AutoCompleteRowIdentifier = @"AutoCompleteRowIdentifier";
    cell = [tableView dequeueReusableCellWithIdentifier:AutoCompleteRowIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:AutoCompleteRowIdentifier] autorelease];
    }
    cell.selectionStyle = UITableViewCellSelectionStyleGray;      
    // Configure the cell...
    RankModel *model = [modelArray objectAtIndex:indexPath.row];
    cell.textLabel.text = [NSString stringWithFormat:@"%@    %@     %@     %@     %@     %@",  model.level, model.name, model.score, model.rightAnswersCount, model.currentRank, model.country];
    return cell;
}

но я хочу отобразить как на изображении.поэтому, пожалуйста, помогите мне преодолеть эту проблему.заранее спасибо.

1 Ответ

2 голосов
/ 10 октября 2011

Ну, это потребует немного больше кода, чем метод, который вы представляете. Я предлагаю вам создать UILabel для каждого из ваших полей, например, с использованием одной строки NSString. Не используйте cell.textLabel, а добавьте свой контент в cell.contentView, и тогда вы сможете управлять цветом каждой метки, цветом фона и размерами меток. Внешний вид "сетки" может быть увеличен путем назначения белого цвета для contentView и назначения зеленого цвета, например, для фона каждой метки. Например, после создания вашей ячейки:

cell.contentView.backgroundColor = [UIColor clearColor];

UILabel* aLabel = [[UILabel alloc] initWithFrame:CGRectMake(100, 0.0, 100, 44)];
aLabel.tag = indexPath.row;
aLabel.textAlignment = UITextAlignmentLeft;
aLabel.textColor = [UIColor whiteColor];
aLabel.text = @"Test";
aLabel.backgroundColor = [UIColor greenColor];
[cell.contentView addSubview:aLabel];
[aLabel release];

Начните следующую метку с 201 или более, чтобы оставить впечатление белой вертикальной линии. Сохраните индекс строки в теге, чтобы вы могли управлять альтернативными цветами в:

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell
                                                        *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {

    if (indexPath.row == 0 || indexPath.row%2 == 0) {
        // use light green, get access to the labels via [cell.contentView viewWithTag:indexPath.row]
    } else {
        // use dark green   
    }
}

Надеюсь, это поможет.

...