2017-08-16 66 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; 
} 
相關問題