Я могу показать/скрыть определенную ячейку в UITableView в зависимости от состояния другой ячейки?

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

Я пытался возвратиться nil в соответствующем -tableView:cellForRowAtIndexPath: для сокрытия ячейки но это не работает и вместо этого выдает исключение.

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

6
задан Marco Peluso 15 January 2010 в 16:30
поделиться

4 ответа

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

http://iphonedevelopment.blogspot.com/2010/01/navigation-based-core-data-application .html

Он использует это в контексте NSFetchedResultsController, но вы можете увидеть, как он использует различные вызовы, чтобы добавить / удалить ячейки и разделы.

Теперь в вашем случае вам нужно будет изменить любой массив, который вы используете для размещения данных, используемых для генерации строк в вашей табличном представлении, когда вы «активируете» вашу ячейку, затем выборочно используете:

  • TableView: InsertrowsAtindexPaths: Withrowanimation:
  • TableView: DelterowsatindexPaths: Withrowsimation:
  • TableView: Вставления:
  • Таблёс:
  • Таблёс:

:

  • Таблёс:
  • Чтобы настроить вещи соответственно (вы можете начать с таблицы: ReloadData :, неэффективно).

    Я понимаю, что API может быть немного пугающим, но найдите время, чтобы прочитать его и понять, что делают различные звонки. Понимание того, как UiableView использует свой источник данных и делегат, а также цепочка событий, которые возникают, когда ячейки выбираются / удалены / etc., Важно, если вы хотите получить все правильно (и без разбивкой).

    9
    ответ дан 8 December 2019 в 05:55
    поделиться

    Vector реализует List, поэтому Collections.sort будет работать.

    -121--2128134-
    SELECT  *, value - nextvalue AS diff
    FROM    (
            SELECT  m.*, LEAD(value) OVER (ORDER BY date DESC) AS nextvalue
            FROM    mytable m
            ORDER BY
                    date DESC
            )
    WHERE   rownum = 1
    

    Обновление:

    Для выбора результатов в компании:

    SELECT  value - nextvalue AS diff
    FROM    (
            SELECT  m.*,
                    LEAD(value) OVER (PARTITION BY companyId ORDER BY date DESC) AS nextvalue,
                    ROW_NUMBER() OVER (PARTITION BY companyId ORDER BY date DESC) AS rn
            FROM    mytable m
            )
    WHERE   rn = 1
    
    -121--5086372-

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

    Например, при использовании массива, когда происходит действие, которое приводит к скрытию ячейки, объект для этой строки удаляется из массива. Затем, в качестве источника данных табличного представления, массив возвращает на одну единицу меньше общего количества и возвращает только допустимые ячейки для каждой строки в этом числе (без нуля).

    Этот подход может потребовать сохранения второго массива со всеми объектами (включая скрытые).

    Чтобы обновить представление, извлеките reloadRowsAtIndexPaths: weyRowAnimation: .

    11
    ответ дан 8 December 2019 в 05:55
    поделиться

    До того, как называется CellforlaTindexPath, NumberofRowsIncision вызывается. Вы должны вернуть соответствующее значение ячеек в разделе там, поэтому, если вы хотите только показать 1 ячейку, вернуть один. Логика, какие клетки показаны, должны быть реализованы частично в обоих методах

    0
    ответ дан 8 December 2019 в 05:55
    поделиться
    [tableView beginUpdates];
    [tableView deleteRowsAtIndexPaths:withRowAnimation:]; // or insertRowsAtIndexPaths:withAnimation:
    [tableView endUpdates]; 
    
    2
    ответ дан 8 December 2019 в 05:55
    поделиться