我无法让UITableViewController重新加载/刷新数据。
我有一个方法,它使用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];
}
任何人都有任何想法???我完全失去了。
干杯, 布雷特
答案 0 :(得分:0)
您不需要performSelectorOnMainThread - asihttprequest总是调用主线程上的选择器。
您是否为表格设置了数据源?您需要至少设置一些字段数据源,请参阅:
至少是cellForRowAtIndexPath和numberOfRowsInSection。这里有一个可能有用的教程:
http://icodeblog.com/2008/08/08/iphone-programming-tutorial-populating-uitableview-with-an-nsarray/