2013-04-18 4 views
0

Я следовал за this учебным пособием, чтобы создать пользовательскую ячейку.Monotouch iphone custom UITableView

Я создал пользовательскую ячейку в Interface Builder, который выглядит так: enter image description here

В моей ViewController я добавил UITableView и привязать его к данным:

myTable.Source = new ListSource(); 

Метод GetCell из ListSource:

public override UITableViewCell GetCell (UITableView tableView, MonoTouch.Foundation.NSIndexPath indexPath) 
    { 
     // Reuse a cell if one exists 
     CustomListCell cell = tableView.DequeueReusableCell ("QCell") as CustomQuestionsListCell; 

     if (cell == null) 
     { 
      // We have to allocate a cell 
      var views = NSBundle.MainBundle.LoadNib ("CustomListCell", tableView, null); 
      cell = Runtime.GetNSObject (views.ValueAt (0)) as CustomListCell; 
     } 

     return cell; 
    } 

проблема заключается в том, что дисплей в конце концов выглядит следующим образом:

enter image description here

Похоже, что какой-то более притирки. Любые идеи, почему это происходит?

Спасибо!

ответ

1

Вам нужно установить вид таблицы RowHeight на любую высоту представления в IB. Это должно быть myTable.RowHeight = ....

Если у вас разные высоты для каждой строки, вы можете использовать GetHeightForRow в делегате, но это намного медленнее, заставляя просмотр таблицы проходить через все ячейки до первого рендеринга (чтобы он мог вычислять высоту прокрутки).

+0

Спасибо! Это решило мою проблему :) –

0

Вам необходимо установить RowHeight для пользовательской ячейки, которую вы используете в своем проекте. Поскольку у вас нет никакой высоты, таблица распределяет по умолчанию TableViewCell. RowHeight, предоставленный вами, должен быть таким же, как и в Interface Builder (IB).