2010-06-30 3 views
1

У меня возникли проблемы с получением моего UITableViewController для перезагрузки/обновления данных.UITableViewController не перезагружает данные - ASIHTTPRequest

У меня есть метод, который использует ASIHTTPRequest для вызова URL-адреса и возврата некоторых строковых данных. Я пытаюсь поместить эти данные в ячейку таблицы, но [self.tableview reloadData] не работает.

Я думал, что ASIHTTPRequest завершает свои задачи в отдельном потоке, так что я пробовал:

[self.tableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:NO]; 

который также ничего не сделал.

Как я могу перезагрузить данные? Я застрял на этом некоторое время.

Код: MainViewController.h

#import <UIKit/UIKit.h> 
@class ProductClass; 
@interface MainViewController : UITableViewController { 
ProductClass *item; 
} 
@property (nonatomic, retain) ProductClass *item; 
@end 

MainViewController.m

#import "MainViewController.h" 
#import "ASIHTTPRequest.h" 
#import "ProductClass.h" 

@implementation MainViewController 
@synthesize item; 

- (void) viewDidLoad { 
self.title = @"TableView Test"; 
self.tableView.allowsSelection = NO; 
self.item = [[ProductClass alloc] init]; 
    [self callURL]; 
} 

-(void)callURL { 
    NSURL *url = [NSURL URLWithString:@"http://urlgoeshere.com"]; 
    ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; 
[request setDelegate:self]; 
[request startAsynchronous]; 
} 


- (void)requestFinished:(ASIHTTPRequest *)request { 
//Grab the response 
NSString *responseString = [request responseString]; 
     //Put the result into the ProductClass item 
item.titleOfProduct = responseString; 

    //This line shows that self.tableview does NOT have an address of 0x0 
NSLog(@"%@\n", self.tableView); 

    //Problem line!!!!!! 
    [self.tableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:NO]; 
    //The below lines also do nothing!!!! 
//[self.tableView reloadData]; 
//[[self tableView] reloadData]; 
} 

Кто-нибудь есть какие-либо идеи ??? У меня полная потеря.

Приветствия, Brett

ответ

0

Вам не нужно performSelectorOnMainThread - asihttprequest всегда вызывает селекторы на главном потоке.

У вас есть источник данных для таблицы? Вам нужно настроить по крайней мере, некоторые из источника данных полей, см:

http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UITableViewDatasource_Protocol/Reference/Reference.html

По крайней мере cellForRowAtIndexPath и numberOfRowsInSection. Здесь есть учебник, который может помочь:

http://icodeblog.com/2008/08/08/iphone-programming-tutorial-populating-uitableview-with-an-nsarray/

Смежные вопросы