![](/img/trans.png)
[英]TableView Reload data is not calling cellForRowAtIndexPath
[英]does reload tabledata affect cellForRowAtIndexPath
我當前正在嘗試設置表視圖,當它第一次加載時,我調用連接類,該類依次調用我的解析器類,然后在我的解析器類內部,我在ViewController中調用了一個方法,該方法是要設置的原始視圖。 此方法傳遞給數組,該數組將在以后使用。
該方法將數組傳遞給此ViewController中的數組變量,然后在此方法中我調用
[self.tableView reloadData];
我想做的是重新加載cellForRowAtIndexPath,以便它將通過我的邏輯(if語句)並檢查if ([returnedArray count] != 0){
然后做它的事情..但是線程永遠不會使它回到此委托方法,它再也不會使其返回到if語句。
更多信息 :)
所以首先,當ViewController加載時
tableView:cellForRowAtIndexPath:被調用並設置我的UITableView看起來都很完美,然后它調用我的NSURLConnection方法,該方法連接到服務器下載所有數據,然后將其傳遞給解析器類。 從那里我的解析器開始處理它的事情,一切都很好。
這就是我的tableView:cellForRowAtIndexPath:方法中的代碼
//..
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的注釋,它將顯示我的過濾數組和所有內容。 但是由於某種原因,reloadData似乎沒有調用tableView:cellForRowAtIndexPath:。我知道這是因為我已經用斷點等對其進行了調試。
所以...希望這些添加的信息可以幫助您:)
[self.tableView reloadData];
它將調用委托方法。 如果不是,則可以檢查self.tableView是否鏈接到要重新加載的tableView。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.