2010-11-24 1 views
0

erklärte ich eine NSArray in meinem .hKann IndexPath.row nicht von einem Array abrufen (Fehler indexPath nicht deklariert)?

@interface DevicePreferencesController : UITableViewController <UIAlertViewDelegate>{ 
    NSArray *plist; 
    UITextField *deviceName; 
} 

Dieses Array Nutzung ist ein plist Daten von URL

und das ist die plist Ich habe

plist:(
     { 
     category = 11; 
     id = 1; 
     name = light1; 
    }, 
     { 
     category = 11; 
     id = 5; 
     name = window; 
    }, 
     { 
     category = 12; 
     id = 2; 
     name = dimmer2; 
    }, 
     { 
     category = 23; 
     id = 3; 
     name = win; 
    } 
) 

ich es zeigen zu laden, Tableview eine

und wenn ich ausgewählt, um die Zelle

Es wird eine Alertview mit einem Textfield Pop-up, kann er die Daten in der plist umbenennen

Und hier ist die Button-Aktion für Alertview

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex { 
if ([alertView tag]==1) { 
     if (buttonIndex == 1){ 
      [request setPostValue:[[self.plist objectAtIndex:indexPath.row] valueForKey:@"id"] forKey:@"id"]; 
      [request setPostValue:deviceName.text forKey:@"name"]; 
      [request startSynchronous]; 
     } 
    } 
} 

Aber ich habe Fehler hier „indexPath“ nicht angemeldete!

Warum? plist ist ein Array, warum kann ich indexPath nicht von einem Array bekommen ???

Antwort

2

'indexPath' ist nicht Ihre Variable, das ist also, weil es nicht deklariert ist. Sie sollten den IndexPfad in der Methode tableview didselectedrow in einer lokalen Variablen speichern und in der delay-Methode alertView verwenden.

+0

Entschuldigung, ich weiß was du meinst, aber kannst du einen Beispielcode geben oder brauche ich eine globale Variable um indexPath zu bekommen? –

+0

Ja, wenn Sie mit dem indexPath-Wert arbeiten müssen, müssen Sie ihn in einer globalen Variablen speichern. – MetaImi

1

indexPath ist als Teil der Delegate- und DataSource-Methoden von TableView verfügbar. Haben Sie eine Variable mit dem Namen indexPath als globale Variable oder als Membervariable in Ihrer Klasse?

+0

no ... Ich habe keine globale Variable in meiner Klasse deklariert –

+0

Deklariere eine globale Variable von NSIndexPath. Und dann in Ihrer - tableView: didSelectRowAtIndexPath: function, weisen Sie die globale Variable mit der durch diese Funktion verfügbaren an und verwenden Sie sie. – Krishnan

+0

stimme deine Antwort ab –

Verwandte Themen