2010-07-15 2 views

ответ

6

UITableView не предназначен для нескольких столбцов. Но вы можете имитировать столбцы, создавая собственный класс UITableCell. Создайте свою настраиваемую ячейку в Interface Builder, добавив элементы для каждого столбца. Дайте каждому элементу тег, чтобы вы могли ссылаться на него в своем контроллере.

Дайте контроллер выход для загрузки ячейки от вашего пера:

@property(nonatomic,retain)IBOutlet UITableViewCell *myCell;

Затем, в cellForRowAtIndexPath методы вашего представления таблицы делегата, присвоить эти значения с помощью тега.

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    static NSString *cellIdentifier = @"MyCell"; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier]; 
    if (cell == nil) { 
    // load cell from nib to controller's IBOutlet 
    [[NSBundle mainBundle] loadNibNamed:@"MyTableCellView" owner:self options:nil]; 
    // assign IBOutlet to cell 
    cell = myCell; 
    self.myCell = nil; 
    } 

    id modelObject = [myModel objectAtIndex:[indexPath.row]]; 

    UILabel *label; 
    label = (UILabel *)[cell viewWithTag:1]; 
    label.text = [modelObject firstField]; 

    label = (UILabel *)[cell viewWithTag:2]; 
    label.text = [modelObject secondField]; 

    label = (UILabel *)[cell viewWithTag:3]; 
    label.text = [modelObject thirdField]; 

    return cell; 
} 
+0

Спасибо за ваш ценный ответ. но мне нужно как DataGrid, как представление таблицы матриц с заголовком и записями. – sri

+0

Возможно, я не понимаю, что вы ищете, но вы можете легко использовать этот подход для создания чего-то, что выглядит как таблица excel. Вы можете добавить представление к заголовку раздела для своих заголовков. Если вы ищете простое решение, которое автоматически создает представление, которое выглядит как матрица, которую вы можете просто заполнить данными, я ничего не знаю. –

+0

Я хотел бы воспроизвести это для себя, не могли бы вы рассказать о типе класса, который эта пользовательская ячейка должна быть в IB? Для того, чтобы эта новая ячейка загружалась для каждой строки для сопоставления с вашей розеткой, содержит ли в MyTableView NIB ячейку просмотра таблицы пользовательского класса, который наследуется от UITableViewCell и имеет выход MyCell? Ваше использование владельца: я здесь, кажется, предположил, что загруженная ячейка действительно имеет тип UITableViewController, что кажется странным. –

0

Вы можете использовать несколько UITableViews рядом. Это должно выглядеть нормально с пользовательскими ячейками. Таким образом, вы можете преобразовать его, пока он не будет похож на DataGrid. ;-)

0

Я создал UIGridView, в котором один UITableViewCell содержит несколько ячеек. Вы можете узнать исходный код UIGridView.

Мой совет - не закодировать его в вашем UIViewController. Создайте внешний элемент управления и используйте его в UIViewController - это намного лучший способ.

Или вы можете просто использовать мой :)

Смежные вопросы