これにobjectsandkeysを含むNSMutableArraysのリストがありNSMutableDictionaries
ます。お気に入り:
[silestoneArray addObject:[[NSMutableDictionary alloc]
initWithObjectsAndKeys:@"Zen: Unsui", @"name",
@"silestone-unsui1.jpg", @"image", nil]];
私は機能している検索を持っていますが、現在、詳細ビューにセグエしようとしています。検索結果からオブジェクトとキーを呼び出す方法を見つけて、検索結果から推測したときに正しいデータが渡されるようにする必要があります。
私のdidselectrowatindexpathとprepareforsegueは次のようになります。
- (void)tableView:(UITableView *)tableView
didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if(tableView == self.mainTableView){
[self.detailViewController setDetailItem:[[contentsList objectAtIndex:indexPath.section]
objectAtIndex: indexPath.row]];}
else
[self.detailViewController setDetailItem:[[contentsList objectAtIndex:indexPath.section]
objectAtIndex: indexPath.row]];
}
#pragma mark - Segue
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([[segue identifier] isEqualToString:@"detailview"]) {
UIViewController *detailViewController = [segue destinationViewController];
// In order to manipulate the destination view controller, another check on which table (search or normal) is displayed is needed
if(sender == self.searchDisplayController.searchResultsTableView) {
detailViewController = self.detailViewController=segue.destinationViewController;
}
else {NSLog(@"Sender: %@", [sender class]);
self.detailViewController=segue.destinationViewController;
}
}
}
これは、次のようにデータを呼び出す詳細ビューに渡されます。
- (void)setDetailItem:(id)newDetailItem
{
if (_detailItem != newDetailItem) {
_detailItem = newDetailItem;
// Update the view.
[self configureView];
}
}
- (void)configureView
{
// Update the user interface for the detail item.
if (self.detailItem) {
self.navigationItem.title = [self.detailItem objectForKey:@"name"];
[self.detailImage setImage:[UIImage imageNamed:self.detailItem[@"image"]]];
}
}
私が現在抱えている問題は、結果から推測すると、元のテーブルから結果が送信されるため、結果のセルに何が表示されていても、画像とタイトルはフィルタリングされていない結果の順序に対応することです。
これは、didselectrowで両方のcontentsListを呼び出しているためですが、検索結果を試してみるとクラッシュします。
エラーレポートは次のとおりです。-[__NSCFConstantString objectForKey:]: unrecognized selector sent to instance 0x21ed8
免除ブレークポイントの下では、この時点でスローされていると表示されます。
self.navigationItem.title = [self.detailItem objectForKey:@"name"];
詳細ビューのこのセクション:
- (void)configureView
{
// Update the user interface for the detail item.
if (self.detailItem) {
self.navigationItem.title = [self.detailItem objectForKey:@"name"];
[self.detailImage setImage:[UIImage imageNamed:self.detailItem[@"image"]]];
}
}
助けてくれてありがとう。