7

ここで私の心の外に出ています。私のコアデータのデータベースでは、私はたくさんのユーザーを持っています。NSFetchedResultController経由でtableviewcontrollerにデータベースを接続しました。ビューがロードされると、私はストーリーボードのsegueを介して詳細viewcontrollerへのプッシュを実行することができます...これまで神、私のテーブルビューは、すべてのタグ値が割り当てられている画像ビューと2つのuitextlabelsを持つカスタムセルを含んでいます..UISearchDisplayController-検索結果ビューに空のセルが含まれているのはなぜですか?

今、検索を実行します。私は述語で新しいNSFetchedResultControllerを作成し、performFetchを実行します。次に、fetchedObjectsプロパティを取得します。一致するユーザーが含まれているため、検索リクエストもcharmのように機能します..すべてのtableviewsデータソースself.tableView == self.searchdispl.viewをチェックして、コントローラからデータを取得する必要があるかどうかを確認します。 ntrollersデリゲートどのコントローラがアクティブであるかを確認するために、どのビューをリロードするかがわかります。私は多くのデータをnslogで処理しても大丈夫です。デリゲートとデータソースのメソッドはすべて正しいビューとフェッチコントローラを使用します..

私のcellForRowAtIndexPathでは、私はuser.nameをログアウトすることができます。また、検索するときに。

私のUITableViewControllers動的プロトタイプセルをbasicに設定しないと、両方のtableviewsにユーザー名のラベルが含まれていない限り、上にあるUISearchDisplayControllerビューには空のセルしかありません。セルからのセグはまだ機能しませんが、セルにデータがあります。

UISearchDisplayControllersビューが汎用ビューであるとしてそれは私が私のUITableViewControllerにUISearchDisplayControllerからのすべての接続をチェックして、すべてが正常に見える。

...少なくともそれはseguesとセルレイアウトに来るとき、そうです..

SearchDisplayControllersビューがセルレイアウトとセグを受け入れないのはなぜですか?

ありがとうございました:)

更新:ちょうど間違っている何が起こっているかを考え出したが、まだ解決策を見つけていません。 私のcellForRowAtIndexPathでは、セルは、searchdisplayviewがこのメソッドにあるとき、常にデフォルトセルとして設定されます。本当にuisearchdisplayが動作するようにコード内にセルを作成する必要がありますか?ストーリーボードから設定されたセルを使用できないのはなぜですか?

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath: (NSIndexPath *)indexPath 
{ 
static NSString *CellIdentifier = @"PersonCell"; 

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
if (cell == nil) { 
    NSLog(@"Default Cell"); 
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 
} 

NSFetchedResultsController *controller = tableView == self.tableView ? self.fetchedResultsController : self.fetchedResultsControllerForSearch; 

Person *p; 
p = [controller objectAtIndexPath:indexPath];  

[(UILabel*) [cell viewWithTag:1] setText:p.name]; 
[(UILabel*) [cell viewWithTag:2] setText:@"Status"];  

if(p.avatarImage){ 
    UIImage *avatar = [[UIImage alloc] initWithData:p.avatarImage]; 
    [(UIImageView *) [cell viewWithTag:3] setImage:avatar];  
} 

return cell; 

}

+7

私はちょうど間違っていたことを理解したにもかかわらず、私はちょうどこれをここに置くでしょう、私は少し恥ずかしいですが、おそらくこの投稿は他人を助けることができます:)問題は、 cellforrowatindexpathのセルは元のviewcontrollersテーブルビューから取得できませんでしたので、私はUITableViewCellからセルを変更しました* cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; UITableViewCellへ* cell = [self。tableView dequeueReusableCellWithIdentifier:CellIdentifier];そして今すべては良いです、セルはストーリーボードからのレイアウトを持っていて、魅力のようなセグの作品です:) –

+0

これは実際には、あなた自身の質問の答えとしてこれを投稿している必要があります! –

答えて

13

問題は、私がcellforrowatindexpathのセルを得たとき、それが元viewcontrollersのテーブルビューからそれを取得していないということでしたので、私はに

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

からラインを変更しました

UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

、今、すべてが良いですが、電池は、ストーリーボードとseguesからレイアウトを持っています魅力のように働きます..

+0

これは私の問題を解決しました。私はiOS 8でこれを試しています、そして、ひどいハックのように感じます。悲しい顔... –

関連する問題