2012-03-25 16 views
-1

Ich erstelle ein benutzerdefiniertes UITableViewCell und ich füge auf der Zelle ein UIProgressView hinzu, weil ich beim Hinzufügen einer Zeile auf dem UITableView die Informationen aus XML-Daten herunterlade will die ProgressView verwenden, um den Fortschritt des Prozesses zu zeigen, meine Frage ist, wie kann ich erkennen, in welcher Indexzeile ich die Fortschrittsanzeige ändern muss, und dann ausgeblendet? ... was ist der Indexpfad der gerade erstellten Zeile ?Fügen Sie UIProgressView zu einer benutzerdefinierten UITableViewCell hinzu und erkennen Sie, was die Indexzeile ist.

in der:

cellForRowAtIndexPath:(NSIndexPath *)indexPath 

i Abrufen von Informationen aus meiner Gewohnheit UITableViewCell auf diese Weise:

UILabel *label; 

label = (UILabel *)[cell viewWithTag:1000]; 
label.text = [[managedObject valueForKey:@"firstName"] description]; 

so wie i des Indexpfads Zeile der Reihe wissen kann nur hinzugefügt, geändert werden dann der Fortschrittsbalken?

+0

hey @Piero Geben Sie das Tag der Fortschrittsanzeige und wenn Sie möchten, erhalten Sie den Wert, oder Sie möchten den Wert von progressview ändern, holen Sie diese Ansicht von seinem Tag aus der Zelle. – Leena

+0

Ok, aber woher weiß ich, welchen Index die Zelle hat? – Piero

+0

set progressView.tag = indexPath.row und dann tun, was auch immer Sie mit progressview tun wollen – Leena

Antwort

0

Ich denke, ich verstehe nicht, was Sie fragen. indexPath ist der IndexPath der gerade erstellten Zeile. Sie legen eine Eigenschaft für diesen Wert fest, aber diese Eigenschaft enthält nur den IndexPath der zuletzt erstellten Zeile.

Aktualisiert Beispiele zeigen:

Methode 1 - Sie sind aus cellForRowAtIndexPath die andere Methode nicht nennen. In diesem Fall müssen Sie eine private Eigenschaft vom Typ NSIndexPath (enthielt nur Code für MyViewController Import und @interface Erklärung Sie zu zeigen, wo das Privateigentum Erklärung setzen:

in .m-Datei:

#import "MyViewController.h" 

@interface MyViewController() 
    @property(nonatomic,strong) NSIndexPath *lastIndexPathCreated; 
@end 

@implementation MyViewController 
@synthesize lastIndexPathCreated; 

...

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
// All your other cell setup code 

self.lastIndexPathCreated = indexPath; 
return cell; 
} 

-(void)someOtherMethod { 
    // The last IndexPath of the row LAST created is self.lastIndexPathCreated 
} 

Methode 2: Das setzt voraus, Sie von innen cellForRowAtIndexPath eine andere Methode nennen:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    // All your other cell setup code 
    [self myOtherMethodWithIndexPath:indexPath]; 
    return cell; 
} 

-(void)myOtherMethodWithIndexPath:(NSIndexPath *)lastIndexPath { 
    // Do something with lastIndexPath 
} 

+0

Ok also in einer anderen Methode im Code, wie ich den Indexpfad der letzten Zeile, die gerade erstellt, um dann das Tag der zu verwenden Fortschrittsanzeige? – Piero

+0

Vielen Dank für die Antwort, aber wenn ich eine Zeile hinzufügen, und Daten laden, um in den Kerndaten einfügen (wo ich die Informationen für die Zeile abrufen) der CellrowFordex-Pfad, neu laden Sie jede Zeile in der Tabellenansicht, und die lastIndexPathCreated ändert die Position in der Tabellenansicht, also ändern Sie auch den Indexpfad ... – Piero

+0

Ja, der IndexPath ändert sich für jede Zeile in der Tabellenansicht. –

Verwandte Themen