TableViewCell

时间:2015-05-14 07:39:57

标签: objective-c tableview tableviewcell

在选择tableviewcell时,我改变了tableviewcell的颜色。 当我在tableViewCell上选择单元格并滚动其他一些也被选中的单元格时。enter image description here

滚动后其他单元格也受影响

enter image description here

这是我的代码

static NSString *identifier = @"TBDCreateGamePlayerCell";

TBDCreateGamePlayerCell *playerCell = (TBDCreateGamePlayerCell *)[tableView dequeueReusableCellWithIdentifier:@"TBDCreateGamePlayerCell"];

if (!playerCell) {
    NSLog(@"creating a new cell : %d",row);
    NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"TBDCreateGamePlayerCell" owner:nil options:nil];
    playerCell = [nib objectAtIndex:0];


}

2 个答案:

答案 0 :(得分:0)

您必须实现此委托方法:

[Test]
public void SendTotalOrder_SendAllItemsToProducer_OneSentOrder()
{
    //Arrange
    Order order = new Order();
    Guest guest = new Guest(1, order);
    Producer producer = new Producer("Thomas", "Guldborg", "Beverage producer");            
    DataGridView dataGridView = new DataGridView { BindingContext = new BindingContext() };
    order.MenuItemId = 1;
    order.Quantity = 1;

    //Act
    guest.AddItem();
    dataGridView.DataSource = guest.SendOrderOverview();
    guest.SendOrder(dataGridView);
    dataGridView.DataSource = producer.OrderOverview();
    var guestTableOrder = producer.OrderOverview()
        .Where(orders => orders.gtid == guest.GuestTableId)
        .Select(producerOrder => producerOrder.gtid) 
        .Single();

    //Assert
    Assert.That(guestTableOrder, Is.EqualTo(guest.GuestTableId));
}

在此方法中,将单元格背景更改回默认颜色。

来自Apple Docs

  

讨论

     

表视图就在此之前将此消息发送给其委托   它使用单元格绘制一行,从而允许代理人   在显示单元格对象之前自定义它。这种方法给出了   委托有机会覆盖先前设置的基于状态的属性   通过表格视图,例如选择和背景颜色。之后   委托返回,表视图仅设置alpha和frame   属性,然后仅在向行或向外滑动动画时动画。

答案 1 :(得分:0)

请看下面的代码......

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{

selected_index= indexPath.row;
[tableView reloadData];

}

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

static NSString *CellIdentifier = @"Cell";

 UITableViewCell *cell = [tableView   dequeueReusableCellWithIdentifier:CellIdentifier];

if (cell == nil)

 cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
 cell.accessoryType=UITableViewCellAccessoryNone;

for (UIView *view in cell.contentView.subviews) {

[view removeFromSuperview];

}

if(indexPath.row==selected_index)

{

cell.contentView.backgroundColor = [UIColor whiteColor];

}

else

{

 cell.contentView.backgroundColor = [UIColor clearColor];

}

}