2017-08-16 63 views
-2

我对我的UITableViewCell有个大问题。我使用故事板,我有一个自定义单元格到我的UITableVIew。我一个标识符添加到这一点,我的类代码是:如何正确使用Objective C中的单元格?

static NSString *celldentifier = @"myCellId"; 

CustomCell *myCell = [tableView dequeueReusableCellWithIdentifier:celldentifier]; 

    if (celldentifier == nil) { 
     celldentifier = [[CustomCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:celldentifier]; 
    } 
... 

编辑:

... 
myCell.myButton.hidden = YES; 
... 

当我加载其他信息在细胞,我需要隐藏按钮,我做了重装表:

[self.myTable reloadData]; 

而在我viewController我重新加载这个tableView显示或隐藏我的单元格中的一些组件像一个UIButton。但是当我滚动时,这个按钮加了消失..

我的代码有什么问题?我怎么能解决这个问题?

+1

显示完整的代码。您需要跟踪何时要隐藏/显示单元格中的组件。 –

+0

该问题的实际原因是在三点之下。但你应该使用这种语法'CustomCell * myCell =(CustomCell *)[tableView dequeueReusableCellWithIdentifier:celldentifier forIndexPath:indexPath];'并删除'celldentifier'检查,它永远不会是'nil'。 – vadian

+2

而你所拥有的代码并不合理。 'celldentifier = [[CustomCell alloc]'? –

回答

0

myCell.myButton.hidden = YES;

它的坏主意,用它cellForRowAtIndexPath方法。

您应该为单元格创建模型并保留单元格的所有属性。

if (myCell == nil) { 
    myCell = [[CustomCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:celldentifier]; 
    //I think it should be but don't shure 
    //[tableView registerClass:<#(nullable Class)#> forCellReuseIdentifier:<#(nonnull NSString *)#>]; 
} 
+1

你的代码中的那些评论是什么?这个答案中的代码如何帮助解决问题? – rmaddy

0
static NSString *celldentifier = @"myCellId"; 
CustomCell *myCell = [tableView dequeueReusableCellWithIdentifier:celldentifier]; 
if (!myCell) { 
    myCell = [[CustomCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:celldentifier]; 
} 
0

我有同样的问题,你应该添加myCell.myButton.hidden = NO;此代码之前myCell.myButton.hidden = YES;

像这样:

static NSString *simpleTableIdentifier = @"myCellId"; 

CustomCell * myCell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier]; 
if (myCell == nil) 
{ 
    NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil]; 
    myCell = [nib objectAtIndex:0]; 
} 

myCell.myButton.hidden = NO; 

if(isReady){ 
    myCell.myButton.hidden = YES; 
} 
0

问题是,细胞得到重用 ..如果您有if语句进行更改 ..请确保有就把别人,所以你恢复它

if(isReady){ 
    myCell.myButton.hidden = YES; 
} 
else { 
    myCell.myButton.hidden = NO; 
} 
相关问题