2016-04-25 19 views
0

Ich habe eine Tabellenansicht. Wenn auf eine Tabellenansichtszelle geklickt wird, wird ein bestimmter Textlabelwert ausgewählt. In der Datei APIRequest.m habe ich eine Variable shipmentReferenceNo, deren Wert als dictSelectRowAtIndexPath als Textlabel-Wert zugewiesen wird.Kann keine Werte über didSelectRowAtIndexPath übergeben

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath; 
{ 
    tabBar = [self.storyboard instantiateViewControllerWithIdentifier:@"TabBarController"]; 
    [self.navigationController pushViewController:tabBar animated:YES]; 
    [tableView deselectRowAtIndexPath:indexPath animated:YES]; 

    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; 
    UILabel *label = (UILabel *)[cell viewWithTag:123123]; 
    self.request = [[APIRequest alloc]init]; 

    self.request.shipmentReferenceNo = label.text; 

    NSLog(@"hello %@", label.text); 

} 

Wenn im Versuch, die shipmentReferenceNo zugreifen wie aus APIRequest.m Datei folgt wie folgt, seine Null

NSLog(@"sd %@",self.shipmentReferenceNo); 

was möglicher Grund für diesen Null-Wert sein könnte, obwohl ich es vorher zugewiesen habe in didSelectRowAtIndexPath ?

+0

liegt daran, dass Sie eine neue Instanz erneut erstellen. self.request = [[APIRequest alloc] init]; Sie entfernen es einfach.Wie Sie bereits selb.request als Eigenschaft deklariert haben, müssen Sie auch nach self.request.shipmentReferenceNo suchen und nicht nach self.shipmentReferenceNo –

+0

Ich habe es versucht, aber immer noch mit dem gleichen Problem – user1241241

+0

setzen Sie einen Haltepunkt in didSelect-Methode und versuchen Sie, den Wert von self.request im Debugger zu drucken. –

Antwort

1

Versuchen Sie diesen Code

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath; 
{ 
    [tableView deselectRowAtIndexPath:indexPath animated:YES]; 
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; 
    UILabel *label = (UILabel *)[cell viewWithTag:123]; 
    self.request = [[APIRequest alloc]init]; 
    self.request.shipmentReferenceNo = label.text; 
    NSLog(@"hello %@", label.text); 

    dispatch_async(dispatch_get_main_queue(), ^{ 
    tabBar = [self.storyboard instantiateViewControllerWithIdentifier:@"TabBarController"]; 
    [self.navigationController pushViewController:tabBar animated:YES]; 
}); 

}

auch Quelle in der Tabellenansicht Daten:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    UITableViewCell *cell = ; 
    [cell.label setTag:123]; 
} 

Dies funktioniert, aber ich werde vorschlagen, Ihren Code zu organisieren, indem die dispatch_async zu machen Code, um die Methode zu trennen.