Пользовательский UITableViewCell AccessoryView MonoTouch имеет значение NULL

Я создал пользовательский UITableViewCell в создаваемом мной приложении MonoTouch. Внутри ячейки я успешно устанавливаю:

Accessory = UITableViewCellAccessory.DisclosureIndicator;

Однако, когда я пытаюсь изменить цвет фона AccessoryView, мое приложение вылетает из-за того, что AccessoryView имеет значение null:

AccessoryView.BackgroundColor = UIColor.White;

Фактически, единственным представлением в ячейке, которое не является нулевым, является ContentView.

У кого-нибудь есть идея, почему AccessoryView равен нулю?


person Apollonas    schedule 24.07.2012    source источник


Ответы (2)


Свойства Accessory и AccessoryView связаны, но не меняют друг друга.

Когда вы устанавливаете собственное настраиваемое представление в AccessoryView, тогда значение Accessory будет игнорироваться UITableViewCell.

У кого-нибудь есть идея, почему AccessoryView равен нулю?

Аналогичным образом, если вы установите Accessory, вы не получите доступа к представлению stock (через свойство AccessoryView) и событиям, если они поддерживаются, например события касания для DisclosureButton будут ячейкой (поскольку вы не можете получить доступ к представлению).

Если вам нужен индивидуальный вид аксессуаров, вы можете создать его самостоятельно и назначить его свойству AccessoryView.

person poupou    schedule 25.07.2012
comment
Спасибо за ответ. Мне не нужен аксессуар нестандартного вида. Моя проблема заключалась в том, что цвет фона аксессуаров был не тем, что я хотел, и тем, что я ожидал. В моей ячейке есть ContentView, и я установил для него белый цвет фона. Я предположил, что могу сделать то же самое с AccessoryView. Я думаю, что, поскольку я могу изменить цвет представления содержимого, я смогу сделать то же самое со всеми представлениями в ячейке. В любом случае я решил свою проблему по-другому. Прочтите, пожалуйста, мой ответ ниже. Еще раз спасибо. - person Apollonas; 26.07.2012

Моя первоначальная проблема заключалась в том, что я добавлял аксессуар в ячейку, но фон этого аксессуара не был таким же, как фон остальной части ячейки. Он получал фон основного представления таблицы, чего я не хотел. Когда я попытался установить цвет AccessoryView.Background на то, что я хотел (думая, что это был виноват), AccessoryView был нулевым.

Для решения своей проблемы я решил создать новый UIView с желаемым цветом фона и установить его в качестве фона для моих ячеек (поскольку изначально он также был нулевым). Это устранило мою проблему, и моя ячейка везде имеет правильный цвет.

person Apollonas    schedule 26.07.2012