2016-05-04 14 views
1

In meiner App möchte ich eine Tabellenansicht (benutzerdefinierte Zellen) basierend auf Button-Tags anzeigen, wenn ich auf meine 1. Schaltfläche klicke zeigt leere Tabellenansicht und Klick auf 2. Schaltfläche zeigt erste Schaltfläche Daten. Hier ist mein Code bis jetzt habe ich versucht, Ich rufe meine IBAction Taste in ViewDidLoad Methode,Wie wird Tabellenansicht basierend auf Schaltflächenwerten mit benutzerdefinierten Zellen geladen?

- (void)viewDidLoad 
{ 
value1=0; 
[self details:nil]; 
} 

Hier ist meine IBAction Methode,

-(IBAction)details:(id)sender 
{ 
    value1 = 0; 
    detaiLine.hidden = NO; 
    rewardLine.hidden = YES; 
    [testTableView reloadData]; 
} 

Hier ist meine tableViewDataSource Methods,

-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
    return 1; 
} 
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
return responseArray.count; 
} 
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
if (value1 == 0) 
{ 
    return 104; 
} 
if(value1 == 1) 
{ 
    return 180; 
} 
return 0; 
} 
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    if (value1 == 0) 
     { 
      static NSString *cellId = @"Cell1"; 
      ContestDetailCell1 * cell = (ContestDetailCell1 *)[contestTableView dequeueReusableCellWithIdentifier:cellId]; 
      if (cell == nil) 
      { 
       NSArray *myNib; 
       myNib = [[NSBundle mainBundle]loadNibNamed:@"ContestDetailCell1" owner:self options:nil]; 
       cell = [myNib lastObject]; 
      } 
     } 
if(value1 == 1) 
{ 
    static NSString *cellIdentifier = @"Cell2"; 
    ContestDetailCell2 *cell = (ContestDetailCell2 *)[contestTableView dequeueReusableCellWithIdentifier:cellIdentifier]; 
    if (cell == nil) 
    { 
     NSArray *myNib; 
     myNib = [[NSBundle mainBundle]loadNibNamed:@"ContestDetailCell2" owner:self options:nil]; 
     cell =[myNib objectAtIndex:0]; 
    } 
} 

Was ist das Problem in meinem Code.

+0

In ViewDidLoad: Sie haben ** Wert = 0; **, ist es ein Tippfehler oder wie in Code, denn dann Wert1 ist überhaupt nicht festgelegt, wenn Ihr Tisch zum ersten Mal geladen wird. Außerdem wird heightForRowAtIndexPath in reloadData nicht aufgerufen. Bitte prüfe. – user3300864

+0

@ user3300864 Ich werde überprüfen n informieren –

+0

@ user3300864 heightForRowAtIndexPath ruft an. –

Antwort

0

Sie ordnen Ihrer value1-Variablen keinen Variablenwert zu. Versuchen Sie diesen Code,

-(IBAction)details:(id)sender 
{ 
    value1 = sender.tag; 
    detaiLine.hidden = NO; 
    rewardLine.hidden = YES; 
    [testTableView reloadData]; 
} 
+0

Ich verwende keine Tags. –

0

Ich denke, dass Sie Ihre Logik nicht korrekt implementiert haben. Ich habe nicht verstanden, warum Sie IBAction von viewdidload aufrufen. Finden Sie dies als eine Arbeit um,

  1. Tag für jede Schaltfläche in Xib oder mit Code hinzufügen.
  2. In Ihrem IBAction Methode das Tag erhalten und auf die Schaltfläche wie folgt identifizieren,

    - (IBAction) Details: (id) sender { value1 = sender.tag; \\ weitere Code hier }

  3. Mit dieser Wert1 Ihre Daten in der Tabellenansicht laden.

Hoffe, das wird Ihnen helfen. Bitte korrigieren Sie mich, falls ich falsch liege. : P