2013-05-05 13 views
24

Ich habe eine benutzerdefinierte Tabelle Tabellenansicht in groupableview. Und ich habe einen versteckt. Ich muss es dann sichtbar machen. Handy-Tag 3.UITableView Set Tabellenansicht Zeile versteckt

Dies ist nicht mein Code arbeiten:

if (self.tableView.tag == 3) { 
       self.tableView.hidden = NO; //Not working. 
      } 

Nur muss ich machen eine eine Zeile sichtbar ist. Ich hoffe, Sie verstehen.

+0

Verweise http://stackoverflow.com/questions/2670635/hiding-guitechviewcell – icodebuster

+1

Sie verstecken Ihre gesamte tableView dort, nicht eine Zeile. – memmons

Antwort

39

die Zellenhöhe in den heightForRowAtIndexPath: für die jeweilige Zelle zero Pass, wird es automatisch ausgeblendet bekommen: -

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
     float heightForRow = 40; 

     YourCustomCell *cell =(YourCustomCell *)[tableView cellForRowAtIndexPath:indexPath]; 

     if(cell.tag==3) 
      return 0; 
     else 
      return heightForRow; 
} 

Fügen Sie die folgende Methode, um Ihren Code, wird es den Trick. Hoffe, es wird dir helfen.

+1

Das hat bei mir funktioniert. Ich habe meinen Code in 'float heightForRow = tableView.rowHeight;' geändert. Diese Eigenschaft gibt die Standardhöhe zurück, wenn sie nicht gesetzt ist. –

+5

Dies funktioniert nicht seit cellForRowAtIndexPath: verursacht einen Absturz, weil die Zellen noch nicht existieren. Die Höhe wird eingerichtet, bevor die Zellen erstellt werden. – Joey

+0

Laut mir ist dies keine gute Lösung, denn wenn Zellen wiederverwendet werden, kann dies zu Konflikten führen. –

1

bitte diesen Code verweisen: -

- (NSInteger)tableView:(UITableView *)table numberOfRowsInSection:(NSInteger)section 
{ 
    if(section == theSectionWithoutARow) 
{ 
    if(shouldRemoveTheRow) 
     return [theArrayWithTheSectionContents count] - 1; 
    else 
     return [theArrayWithTheSectionContents count]; 
    } 
    // other sections, whatever 
    } 

    - (UITableViewCell *)tableView:(UITableView *)table cellForRowAtIndexPath:   (NSIndexPath *)indexPath 
    { 
     // blah blah standard table cell creation 

    id theCellObject; 

    if(indexPath.section == theSectionWithoutARow) 
    { 
    NSInteger theActualRowToDisplay = indexPath.row; 
    if(shouldRemoveTheRow && indexPath.row >= theRowIndexToRemove) 

    { 
     theActualRowToDisplay = indexPath.row + 1; 
    } 
    theCellObject = [theArrayWithTheSectionContents objectAtIndex:theActualRowToDisplay]; 
} 

// now set up the cell with theCellObject 

return cell; 
    } 

Hope this helfen Ihnen

+13

Wahrscheinlich der unordentlichste Code, den ich gelesen habe. – Osa

41

In SWIFT Sie zwei Dinge tun müssen,

  1. HIDE Ihr Handy. (weil die wiederverwendbare Zelle einen Konflikt verursachen kann)

  2. Stellen Sie die Höhe der Zelle auf ZERO ein.

Schauen Sie sich hier

  1. HIDE Sie Zelle.

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
        let myCell:UITableViewCell = tableView.dequeueReusableCell(withIdentifier: "cellID",for: indexPath) as! UITableViewCell 
    
        if(indexPath.row < 2){ 
         myCell.isHidden = true 
        }else{ 
         myCell.isHidden = false 
        } 
    
        return myCell 
    } 
    
  2. Set Höhe von Zelle zu ZERO.

    func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { 
        var rowHeight:CGFloat = 0.0 
    
        if(indexPath.row < 2){ 
         rowHeight = 0.0 
        }else{ 
         rowHeight = 55.0 //or whatever you like 
        } 
    
        return rowHeight 
    } 
    

Damit können sie wieder verwendbaren Zellkonfliktthemen entfernen.

Sie können das gleiche für Zelle tun? .tag auch bestimmte Zelle nach Tag zu verbergen.

+0

bessere Antwort! –

+0

Wenn ich dies verwende, erhalte ich eine Warnung: "Wahrscheinlich mindestens eine der Einschränkungen im Folgenden Liste ist eine, die Sie nicht wollen. Versuchen Sie Folgendes: (1) Sehen Sie sich jede Einschränkung an und versuchen Sie herauszufinden, was Sie nicht erwarten; (2) finde den Code, der die unerwünschte Beschränkung oder die Nebenbedingungen hinzufügt und ihn behebt " – DrPatience

+2

Ich verstehe nicht, warum die Zelle versteckt werden muss? Wie bewirkt das Setzen der Höhe auf Null, dass wiederverwendbare Zellen in Konflikt geraten? –

Verwandte Themen