Как скрыть раздел в UITableView?

Это позволяет визуализировать, что команда все еще выполняется:

while :;do echo -n .;sleep 1;done &
trap "kill $!" EXIT  #Die with parent if we die prematurely
tar zxf packages.tar.gz; # or any other command here
kill $! && trap " " EXIT #Kill the loop and unset the trap or else the pid might get reassigned and we might end up killing a completely different process

Это создаст бесконечный цикл while , который выполняется в фоновом режиме и отображает «». каждую секунду. Это отобразит . в оболочке. Запустите команду tar или любую другую команду. Когда эта команда завершает выполнение, то уничтожает последнее задание, работающее в фоновом режиме - это бесконечный цикл while .

26
задан Teo Choong Ping 30 June 2009 в 00:19
поделиться

4 ответа

Вы не можете «скрыть» раздел как таковой, но можете «удалить» его из табличного представления с помощью метода deleteSections: withRowAnimation: . Это удалит его из представления с дополнительной анимацией, не затрагивая данные резервного копирования. (Однако вам все равно следует обновить данные, чтобы раздел не появлялся повторно.)

Дополнительная информация: Ссылка на класс UITableView

22
ответ дан 28 November 2019 в 06:06
поделиться

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

1
ответ дан 28 November 2019 в 06:06
поделиться

Вы можете установить количество строк в этом разделе к 0. Однако он оставит заметную пустую область, где она раньше была.

2
ответ дан 28 November 2019 в 06:06
поделиться

Вы также можете вернуть количество записей, которые содержат данные из функции numberofSectionsInTableView: метода и использовать switch(indexPath.section) , где вы позволяете пустым записям "провалиться" в следующий переключатель, например:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    switch (indexPath.section) {
        case 0:
            return <header cell>;
            break;

        case 1:
            if(firstRecordHasData){
                return <second cell>;
                break;
            }

        case 2:
            if(secondRecordHasData){
                return <second cell>;
                break;
            }

        case 3:
            return <some other cell>;
            break;

        default:
            return <a regular cell>;
            break;
    }   
}

Я боролся с этим некоторое время, потому что мне нужно было оставить разделы в середине сгруппированной таблицы. Пробовал установить высоту ячеек, заголовков и колонтитулов на 0.0, но это не помогло. Нельзя было просто удалить определенные разделы из-за вызываемых методов в зависимости от выбранной строки. Это должно было стать огромным if...else if...else if с многочисленными вызовами подпрограмм. Рад, что вспомнил о старом добром методе switch, возможно, он поможет и вам :-)

.
2
ответ дан 28 November 2019 в 06:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: