2014-02-18 3 views
1

Как вы скрываете статическую ячейку?Как скрыть статический UITableViewCell?

Я хотел бы спрятать и статическую ячейку, если изображение не существует.

Я пробовал:

imageCell.hidden = YES; //did not work 

Я видел ответы, предполагающие изменить источник данных или использование:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    return 0;// will hide all cell 
} 

Но я не мог найти способ сделать это с конкретным видом клетки.

то, что я хочу добиться:

if(image==nil){ 
//hide imageCell 
} 

Теперь здесь подвох, изображение загружается асинхронно, поэтому deleguate методы можно назвать до попытки downlaod.

ответ

0

Выполните следующие действия:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { 
    if (indexPath.row == 2 && !myImageIsLoaded) 
     return 0; // Will hide just the third row of your table if myImageIsLoaded is false 
    return 44; 
} 

И вы можете использовать следующие анимировать все каждый раз, когда вы хотите (например, каждый раз, когда изображение как заряженное):

[myTable beginUpdate]; 
[myTable endUpdate]; 

Если ваши клетки являются статическими, так он должен работать. В противном случае вы можете столкнуться с некоторыми проблемами.

+0

это происходит сбой приложения EXC_BAD_ACCESS я добавлю больше деталей –

+0

Можете ли вы предоставить свои методы DATASOURCE таблицы? – AncAinu

+0

Я не реализовал какой-либо метод, я просто создаю outlets для datasource и делегировать, так как он просто статические ячейки –

0

Если вы хотите буквально скрыть ячейку, изображение не существует, вы можете попробовать это:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { 
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; 
    return [cell imageView] ? 44.0f : 0.0f; 
} 
+0

это приводит к сбою приложения EXC_BAD_ACCESS –

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