私は現在、自分のパーサークラスを呼び出すコネクションクラスを最初にロードしたときにテーブルビューを設定しようとしています。次にパーサクラス内で、私のViewController元のビューが設定されています。このメソッドは後で使用される配列に渡されます。は、CellForRowAtIndexPathに影響します。
方法は、この方法では、私はその後、
[self.tableView reloadData];
を呼び出し、それが(私のロジックを通過するように、私はそれがやりたいと思っていますがリロードcellForRowAtIndexPathで、こののViewControllerで配列変数に配列を渡しますifステートメント)、if ([returnedArray count] != 0){
をチェックしてください。スレッドはこのデリゲートメソッドに戻ってこないので、ifステートメントに戻ることはありません。
MORE INFO :)だから、最初にすべての、のtableViewときのViewControllerのロード
:cellForRowAtIndexPathは:と呼ばれ、すべてが完璧に見える私のUITableViewを設定され、それはその後、接続している私のNSURLConnectionメソッドを呼び出します私のサーバーにすべてのデータをダウンロードし、それを私のパーサークラスに渡します。そこから私のパーサーはそのことを分かり、すべてうまくいっています。
これは、コードが私のtableViewで次のようになります。私のパーサクラスのparserDidEndDocumentメソッド内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
私は戻っMAINVIEWにNSArrayのを渡しています。
- (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:私はブレークポイントでそれをデバッグしているので..私はこのことを知っているなど
そう...うまくいけば、この情報は、あなたが私を助けるのに役立ちます追加:)
これは、画面に表示されているセルをリロードする必要があります。それは全く細胞を再ロードしないのですか? –
いいえ、どのセルも再ロードしていません。メソッドをデバッグしました。そのコードが実行された後は、決してそれには行きません。 –
view(viewDidLoadなど)を単に設定しているときは、reloadDataを呼び出さないでください。テーブル行のセルが要求されたときに、テーブルセルを構成します。テーブルが既に表示されていて、それを更新する必要があるときにreloadDataを呼び出す – jamihash