2016-02-17 3 views
1

У меня есть обычай UITableViewCell, в котором у меня есть два UIViews. Я хочу изменить радиус BackgroundColor и некоторые другие свойства UIViews.Не удалось обновить Subview в пользовательском UITableViewCell

Но я не могу этого сделать.

Это мой setUp.

Шаг 1:

Create A Custom Cell with XIB. 

Шаг 2: Введенное имя Cell Identifer в XIB для CustomCell.

Шаг 3: конкретизированных NIB в viewDidLoad

UINib *nib = [UINib nibWithNibName:@"CustomCell" bundle:nil]; 
[[self mTableView] registerNib:nib forCellReuseIdentifier:@"CustomCell"]; 

Шаг 4: Ячейка для строки при Метод Index:

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    // Create an instance of ItemCell 
    CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:@"CustomCell"]; 

    [cell updateCellView]; 

    return cell; 
} 

Шаг 5: Проверено в два раза выходные соединения все в порядке.

Шаг 6: Пользовательские Cell Класс:

#import "TransportCell.h" 

    @implementation TransportCell 

    - (void)awakeFromNib { 
     // Initialization code 

     } 

    - (void)setSelected:(BOOL)selected animated:(BOOL)animated { 
     [super setSelected:selected animated:animated]; 

     // Configure the view for the selected state 
    } 


    - (void)updateCellView 
    { 
    self.backgroundView.backgroundColor = [UIColor redColor]; 
    } 

    @end 

Этот код не оказывает никакого влияния на моем сотовом View.

Я отлаживаю код. Когда я вошел в backgroundView я получаю nil когда updateCellView метод дозвонились:

enter image description here

Вот мой CustomCell в XIb:

enter image description here

Я должен изменить свойства внутренней UIView (синий. в цвете)

+0

try self.backgrondColor = [UIColor redcolor] – riddhi

+0

он изменит цвет фона ячейки – Dalvik

+0

у вас есть розетка для вашего фонового изображения или она связана с вашим видом? – riddhi

ответ

0

Вместо вызова метода в cellForRowAtIndexPath попробуйте следующее:

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    // Create an instance of ItemCell 
    CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:@"CustomCell"]; 
    return cell; 
} 

, а затем в пользовательском методе

- (void)updateCellView 
    { 
    self.backgroundView.backgroundColor = [UIColor redColor]; 

    // reload the table view 
    [self.tableView reloadData]; 
    } 
+1

bro вы видите вопрос, метод присутствует в классе ячеек не в текущем контроллере представления –

+0

Как получить ссылку для представления таблицы в ячейке My Custom – Dalvik

+0

извините, я не проверял это ... но вы также можете создать настраиваемый метод в viewcontroller и из которого вы можете управлять представлениями –

0

вам нужно добавить [TableView reloadData] в целях обновления метод клеточного

+0

Метод updateCellView находится в customClass. как я могу передать ссылку на эту настраиваемую ячейку – Dalvik

0

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

Изменение источника данных или эти события должны либо триггер обновления всей таблицы:

-(void) reloadData 

или некоторые клетки:

- (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation 

Только тогда клетки будут обновлены.

+0

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

+0

функции перезагрузки используются для динамического обновления таблицы. Вы хотите динамически обновлять свои ячейки на основе событий или обновлять их только в первый раз, когда они отображаются? –

0

попробовать этот метод в TransportCell, это стриж код делает то же самое для Objective C

override func layoutSubviews() 
{ 
self.backgroundView.backgroundColor = [UIColor redColor]; 
} 
0

вы изменяете self.backgroundview.backgroundColor

По умолчанию это nil для клеток в UITableViewStylePlain, и не ноль для .

«backgroundView» будет добавлен как подзаголовок за всеми остальными видами.

@property (nonatomic, strong, nullable) UIView *backgroundView; 
0

Используйте это:

self.contentView.backgroundColor = [UIColor redColor]; 

Надеется, что это помогает!

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