почему не работает цвет фона uitableviewcell (устанавливается в конструкторе интерфейсов)?

<p>почему не работает цвет фона uitableviewcell (устанавливается в конструкторе интерфейсов)?</p><p>из некоторых поисков я замечаю, что следующий код, установленный в вашем пользовательском подклассе uitableviewcontroller, работает (см. ниже):</p><pre><code>- (void)tableview:(uitableview *)tableview willdisplaycell:(uitableviewcell *)cell forrowatindexpath:(nsindexpath *)indexpath { cell.backgroundcolor = [uicolor redcolor]; } </code></pre><p>но я все еще хотел бы просто понять, почему в конструкторе интерфейсов есть настройка цвета фона для tableviewcell, которая, кажется, эффективно не работает?</p>

<p>(попробуй это)</p><p>дизайн apple ib является общим для применения к различным компонентам, а также предназначен для высокотехнологичной аудитории (разработчиков). следовательно, он не был разработан (как приложение) для полной индивидуальной настройки интерфейса для каждого типа компонента/ситуации. таким образом, в этом случае возможность установить цвет фона немного вводит в заблуждение.</p>

<p>уже немного поздно, но я только что столкнулся с этой проблемой ... настройка цвета фона на <code>contentview</code> работает нормально:</p><pre><code>cell.contentview.backgroundcolor = [uicolor redcolor]; </code></pre>

<p>для меня сработало создание собственного объекта uiview, который должен быть установлен в качестве фонового представления uitableviewcell. в cellforrowatindexpath:</p><pre><code>uitableviewcell *cell = [tableview dequeuereusablecellwithidentifier:cellidentifier]; uiview* bgview = [[uiview alloc] initwithframe:cgrectmake(0, 0, 1, 1)]; bgview.opaque = yes; bgview.backgroundcolor = [uicolor orangecolor]; [cell setbackgroundview:bgview]; </code></pre>

<p>попытка установить цвет фона самой uitableviewcell - это не то, что вы должны делать. ячейка таблицы имеет набор из пяти полезных представлений, к которым вы можете получить доступ, одним из которых является <code>backgroundview</code>.</p><p>рекомендуемое чтение:</p><p> <a href="http://cocoawithlove.com/2009/04/easy-custom-uitableview-drawing.html">http://cocoawithlove.com/2009/04/easy-custom-uitableview-drawing.html</a> </p><p>а потом:</p><p> <a href="http://cocoawithlove.com/2010/12/uitableview-construction-drawing-and.html">http://cocoawithlove.com/2010/12/uitableview-construction-drawing-and.html</a> </p>

<p>вы всегда должны предоставлять изменения для ячеек в <code>tableview:willdisplaycell:forrowatindexpath:</code> вместо метода <code>tableview:cellforrowatindexpath:</code>, как указано в документации apple.</p><p>это работает !!</p>

<pre><code>[cell.textlabel setbackgroundcolor:[uicolor clearcolor]]; [cell.contentview setbackgroundcolor:[uicolor redcolor]]; </code></pre>

<p>убедитесь, что перед определением цвета ячейки ваш <code>backgroundview</code> равен нулю</p><pre><code>cell.backgroundview = nil; cell.backgroundcolor = [uicolor redcolor]; </code></pre>

<p>это просто и работает: в конструкторе интерфейса добавьте объект представления в uitableviewcell тех же размеров и поместите элементы управления в это представление. тогда вы получите любой цвет фона, который вы хотите.</p><p>правка: вот причина, чтобы принять, это просто поразило меня: внимательно посмотрите на то, что вы получаете, когда вы дважды щелкаете на uitableviewcell в ib, который вы помещаете в свое перо, чтобы начать добавлять вещи к нему: вы не получаете простой прямоугольный вид, вы получите овальный прямоугольник, который достаточно ясно говорит: представление содержимого. таким образом, все, что вы можете сделать, это установить представление содержимого uitableviewcell в ib, а установка свойства цвета фона представления содержимого не приведет к изменению цвета в таблице. как говорят в документах, uitableviewcells - это сложные звери со многими частями, и многое происходит за кулисами с точки зрения uitableview, регулирующего его и играющего с ним. </p>

<p>вы можете частично сделать это в интерфейсном разработчике (вероятно добавленный в xcode недавно):</p><ul> <li>разверните ячейку в структуре документа раскадровки и выберите «представление содержимого»</li> <li>установить цвет фона представления содержимого в инспекторе атрибутов</li> <li>выделите каждый элемент содержимого в ячейке и установите их цвет фона to clearcolor</li> </ul><p>все еще не вижу способа установить вспомогательный фон все же.</p>

<p>попробуйте это, это работает для меня:</p><pre><code>- (void)tableview:(uitableview *)tableview1 willdisplaycell:(uitableviewcell *)cell forrowatindexpath:(nsindexpath *)indexpath { [cell setbackgroundcolor:[uicolor clearcolor]]; tableview1.backgroundcolor = [uicolor colorwithpatternimage: [uiimage imagenamed: @"cream.jpg"]]; } </code></pre>

<p>да нет, используйте setbackgroundcolor </p><pre><code>self.table.separatorcolor=[uicolor whitecolor]; [table setbackgroundcolor:[uicolor colorwithred:.8 green:.8 blue:1 alpha:1]]; </code></pre>

<pre><code>-(void)tableview:(uitableview *)tableview willdisplaycell:(uitableviewcell *)cell forrowatindexpath:(nsindexpath *)indexpath{ uiview *view = [[uiview alloc] init]; [view setbackgroundcolor:[uicolor redcolor]]; [cell setselectedbackgroundview:view];} </code></pre><p>нам нужно изменить цвет в этом методе.</p>

<p>это работает отлично, если вы выберете вид таблицы и установите цвет фона, например, красный, вся таблица будет красной .. возможно, вы не связали таблицу или что-то в этом роде </p><p>надеюсь, это помогло </p>

<p>я также получил эту проблему .. в ib вы можете изменить цвет фона ячейки при выборе ячейки. это не правильно. вы должны перейти к схеме документа слева от раскадровки и выбрать представление содержимого внутри ячейки. измените фон представления содержимого. теперь вы должны получить правильный цвет ячейки.</p>