пользовательская ячейка и предложение UITableViewController - PullRequest
0 голосов
/ 17 июля 2011

У меня есть пользовательская ячейка для моего UITableView. Я поместил проводника влево-вправо-влево на мою камеру. В этом случае, если пользователь проводит по ячейке, он вызывает функцию. Эта функция в основном создает UIView, который должен быть добавлен в ячейку.

Я бы хотел, чтобы в моем коде использовалась передовая практика MVC. Поэтому я думаю, что нужно сделать, чтобы передать UIView в пользовательскую ячейку и позволить моей реализации моей пользовательской ячейки добавить ее в ячейку. В моей пользовательской ячейке также есть свойство UIView.

Проблема в том, что мне нужно будет также отрегулировать высоту ячейки. Теперь метод, который у меня есть:

+ (CGFloat)tableView:(UITableView *)tableView rowHeightForObject:(id)item {

}

это похоже на обычную heightForRowAtIndexPath, вместо пути индекса это объект. В этом методе мне нужно определить, есть ли UIView, который нужно добавить или нет. Если есть, высота должна быть отрегулирована на основе этого. Я не могу думать об этом. В этом методе я не могу сделать self.optionsView или получить доступ к любому свойству в моем подклассе пользовательской ячейки. Так как же проверить, добавлены ли опции или нет?

Ответы [ 2 ]

0 голосов
/ 17 июля 2011

Как отметил Идан, хорошо бы просто спросить ячейку о ее размере контента. Я бы просто использовал стандартный heightForRowAtIndexPath метод, подобный этому:

//Assuming myCustomCell contains a placeholder for my additional view called innerView.  
//If the place holder is nil I don't need to adjust cells height.
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{

    //Get the cellPath and myCustomCell at this path
    NSIndexPath *rowPath = [NSIndexPath indexPathForRow:row inSection:0];
    MyCustomTableCell *myCustomCell = (MyCustomTableCell*)[self.table cellForRowAtIndexPath:rowPath];

    if(myCustomCell.innerView != nil)
        return myCustomCell.innerView.frame.size.height + someDefaultCellHeight;

    else
        return defaultCellHeight;
}
0 голосов
/ 17 июля 2011

Вы можете добавить свойство rowHight в свой пользовательский класс ячеек и добавить еще одну высоту var в данные источника данных табличного представления.Каждый раз, когда вы изменяете пользовательскую ячейку, не забудьте установить свойство height и назначить его данным источника данных в правильном положении.

Затем внутри heightForRowAtIndexPath просто запросите данные высоты.

Надеюсь, это ясно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...