2017-12-16 3 views
0

Ich habe eine dynamische TableView, Textfield und Buttons implementiert. Mein Problem ist, wenn ich den Knopf in der ersten Reihe meines UITableViewCell verstecke, werden die anderen fünf Reihen des Zellenknopfes auch versteckt.Wie kann man eine bestimmte Zeilenschaltfläche in Dynamic UITableViewCell in Objective C ausblenden?

Kann jemand eine Lösung für dieses Problem vorschlagen?

Ich habe unten Code versucht ..

ladiesdetails=[[NSMutableArray alloc]initWithObjects:@"2",@"0",@"0",@"0",@"0",@"0", nil]; 



- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    // Return the number of rows in the section. 
    return 6; 
} 
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 


    static NSString *CellIdentifier = @"cell1"; 

    cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

    if (cell == nil) { 
     cell = [[passengerdetailcell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 
    } 
if([[ladiesdetails objectAtIndex:indexPath.row] intValue]==2) 
{ 
cell.malebutton.hidden=yes; 
} 
return cell; 
} 
+0

Wenn Sie Malebutton bei 'indexPath.row == 2' verstecken, müssen Sie auch für andere indexpath angezeigt werden. schreibe 'hidden = no;' in den anderen Teil der if-Bedingung und versuche es. –

Antwort

1

wie diese

bool flag = ([[ladiesdetails objectAtIndex:indexPath.row] intValue] == 2) 
cell.malebutton.hidden = flag 
+3

Kürze ist akzeptabel, aber vollere Erklärungen sind besser. –

+1

Danke für Ihren Beitrag es funktioniert für mich –

1

einfach den sonst Zustand versetzt und auf die Schaltfläche sichtbar in cellForRowAtIndexPath Methode machen. Wenn Sie eine andere Bedingung haben, um das hinzuzufügen, fügen Sie das hinzu.

if([[ladiesdetails objectAtIndex:indexPath.row] intValue]==2) { 
    cell.malebutton.hidden = YES; 
} else { 
    cell.malebutton.hidden = NO; 
} 
+0

dieser Code funktioniert auch für mich, vielen Dank .. –

0

es wegen der Zelle Wiederverwendung geschieht, verwenden Sie die Zelle wie unter einem zuzuteilen.

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
    { 
     // Return the number of rows in the section. 
     return 6; 
    } 
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
    { 
     PassengerDetailTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"PassengerDetailCell" forIndexPath:indexPath]; 
     if([[self.ladiesdetails objectAtIndex:indexPath.row] intValue]==2) 
     { 
      cell.maleButton.hidden = TRUE; 
     } 
     return cell; 
    } 
+0

PassengerDetailTableViewCell * Zelle = [tableView dequeueReusableCellWithIdentifier: @ "PassengerDetailCell" forIndexPath: indexPath]; diese Zeile zeigen einen Fehler wie NSInternalConsistencyException: nicht in der Lage, die Zelle aus der Warteschlange. Warum dieser Fehler –

+0

überprüfen, ob Sie korrekte Header und Name der Klasse importieren sind gleich, würde mein Code Klassenbenennung anders – Vinodh

Verwandte Themen