我正在尝试设置我的tableview,当它第一次加载时我调用我的连接类,然后调用我的解析器类然后在我的解析器类中我调用我的ViewController中的方法,这是原始视图建立。该方法传递一个将在后面使用的数组。
该方法将数组传递给此ViewController中的数组变量,然后在此方法中调用
[self.tableView reloadData];
我想要做的是重新加载cellForRowAtIndexPath,以便它将通过我的逻辑(if语句)并检查if ([returnedArray count] != 0){
然后做它的事情..但是线程永远不会回到这个委托方法,反过来永远不会回到if语句。
更多信息:)
首先,当ViewController加载
时tableView:cellForRowAtIndexPath:被调用并设置我看起来完美的UITableView,然后调用连接到我的服务器的NSURLConnection方法下载所有数据,然后将其传递给我的解析器类。从那里我的解析器给它的东西,并且一切都很好。
这就是我的tableView中的代码:cellForRowAtIndexPath:,method
//..
if (indexPath.row == 0){
if ([FilterArray count] == 0){
[cellActivityIndicator startAnimating];
//-- Start NSURLConnection
EngineRequests *engineRequests = [[EngineRequests alloc] init];
[engineRequests initalizePacketVariables];
}
if ([FilterArray count] != 0){
[cellActivityIndicator stopAnimating];
cell.accessoryView = nil; //hides activity indicator
cell.userInteractionEnabled = YES;
cell.backgroundColor = [UIColor whiteColor];
UILabel *label1;
label1 = (UILabel *)[cell viewWithTag:1];
label1.textColor = [UIColor darkGrayColor];
UILabel *label2;
label2 = (UILabel *)[cell viewWithTag:2];
label2.textColor = [UIColor darkGrayColor];
//...etc
在我的解析器类的parserDidEndDocument方法中,我将NSArray传递回MainView。
- (void)parserDidEndDocument:(NSXMLParser *)parser
{
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"%K like %@",@"ISCHECKED",@"T"];
NSArray *filteredArray = [parsedDataArrayOfDictionaries filteredArrayUsingPredicate:predicate];
//call method in VieController1 to pass array over
SearchViewController *searchViewController = [[SearchViewController alloc] init];
[SearchViewController initFilterArray:filteredArray];
}
然后我回到我的VC1和我在.h中声明的方法然后显然在.m文件中
这就是我所拥有的所有代码。
#pragma - Reciver methods
-(void)initFilterArray:(NSArray*)array
{
//initalise array variable for use in latter views
FilterArray = array;
//reload to make cell white
[self.tableView reloadData];
// NSLog(@"%@", FilterArray);
}
在调试代码时,线程会使用此方法并运行所有内容..如果我取消注释NSLog,它会显示我的filitered数组和所有内容。但由于某种原因,reloadData似乎没有调用tableView:cellForRowAtIndexPath:..我知道这一点,因为我已经使用断点等调试它。
所以...希望这些附加信息可以帮助你帮助我:)。
答案 0 :(得分:0)
[self.tableView reloadData];
它将调用委托方法。 如果不是,您可以检查self.tableView是否链接到要重新加载的tableView。