Ich versuche, ein UITableView in meinem Viewcontroller zu füllen (es ist ein Delegierter von UITableView)UITableView nicht angezeigt Inhalt
Der Code unten etwas, das ich online gefunden habe. Ich habe einige Änderungen vorgenommen, so dass ich keinen UITableViewController brauchte, um ihn zu benutzen. Aber seit ich es geändert habe, kann ich nicht herausfinden, wie der Text in den Zellen gedruckt wird. Bevor ich den Code ändere, um meiner ViewcController-Unterklasse zu erlauben, ein Delegierter von UITableView zu sein. Kann mir jemand in die richtige Richtung zeigen?
Ich habe überprüft und die XML richtig Parsen. Wenn der Code die if (marrXMLData.count != 0)
im startParsing
Verfahren erreicht, marrXMLData
größer als 0 (8 spezifisch ist, die richtige und Gesamtanzahl der Elemente in meinem XML)
Code ist aus: http://www.theappguruz.com/blog/xmlparsing-with-nsxmlparser-tutorial
.m unter
DisplayTableViewController
@synthesize marrXMLData;
@synthesize mstrXMLString;
@synthesize mdictXMLPart;
- (void)viewDidLoad{
[super viewDidLoad];
[self startParsing];
}
- (void)startParsing{
NSData *fileData = [NSData dataWithContentsOfFile:[[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"file.xml"]];
NSXMLParser *xmlparser = [[NSXMLParser alloc] initWithData:fileData];
[xmlparser setDelegate:self];
[xmlparser parse];
if (marrXMLData.count != 0) {
[self.myUITableView reloadData];
}
}
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict;{
if([elementName isEqualToString:@"Content"])
marrXMLData = [[NSMutableArray alloc] init];
if([elementName isEqualToString:@"item"])
mdictXMLPart = [[NSMutableDictionary alloc] init];
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string;{
if(!mstrXMLString)
mstrXMLString = [[NSMutableString alloc] initWithString:string];
else
[mstrXMLString appendString:string];
}
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName;{
if([elementName isEqualToString:@"title"] || [elementName isEqualToString:@"url"]){
[mdictXMLPart setObject:mstrXMLString forKey:elementName];
}
if([elementName isEqualToString:@"item"])
[marrXMLData addObject:mdictXMLPart];
mstrXMLString = nil;
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection: (NSInteger)section{
return [marrXMLData count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath: (NSIndexPath *)indexPath{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell" forIndexPath:indexPath];
cell.textLabel.text = [[[marrXMLData objectAtIndex:indexPath.row] valueForKey:@"title"] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
cell.detailTextLabel.text = [[[marrXMLData objectAtIndex:indexPath.row] valueForKey:@"url"] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
return cell;
}
@end
EDIT:
Nach etwas mehr diese Methode mit ihm spielen nicht
genannt werden- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
Im Beispielcode wird es aufgerufen, aber ich weiß nicht wo. (Entschuldigung, ich bin sehr neu in iOS)
Ihre Frage ist zu vage, um beantwortbar zu sein. "Ich kann nicht herausfinden, wie der Text auf dem Etikett gedruckt werden kann." Was bedeutet das? Welcher Text? Welches Etikett? Erhalten Sie die richtige Anzahl von Zellen? Erhalten Sie Inhalt in der Textbeschriftung, aber nicht die Detailtextbeschriftung, die Detailbeschriftungsbeschriftung, aber nicht die Beschreibungsbeschriftung oder keine von beiden? Welcher Code löst Ihre XML-Analyse aus und füllt Ihr XML-Datenarray auf? –
Dieser Code setzt voraus, dass '[xmlparser parse]' vor dem '[self.myUITableView reloadData]' läuft und beendet wird. Stellen Sie zunächst sicher, dass 'self.myUITableView reloadData' nach dem syntaktischen Analysieren mit nslog oder breakpoints aufgerufen wird Vergewissern Sie sich, dass das Array "marrXMLData" Objekte enthält. Eine quicjk aber schlechte Lösung würde Ihre '[self.myUITableView reloadData]' an das Ende von didEndElement '(void) Parser: (NSXMLParser *) Parser didStartElement' –
Hallo @DuncanC Ich habe ein paar Änderungen gemacht, um besser zu erklären. Ich versuche Zellen in einem UITableView zu füllen. Das Label wäre in der Zelle – Airagale