これは私にとって大きな問題であり、私はまだそれに固執しているので、誰かが私に何らかのガイダンスを与えてくれることを願っていました.
私が持っているものは次のとおりです。
- 複数のセルを含む 3 つのテーブルビューと、各セルに複数のテキスト フィールドがあります。
- これらのセルの特定のテキストフィールドが押されるたびにポップオーバー内に表示される 1 つのテーブルビュー。このテーブルビューにはすべてがあります!! データベースから必要なデータを取得するためのコア データ メソッド。
すべてが正常に機能します...しかし、テーブルビュー1または2または3に表示されるデータの種類を区別する必要があります...だから、述語を使用する必要があることを知っています!.
私がやったこと:(そして私は他のことを試しました)
- (NSFetchedResultsController *)fetchedResultsController
{
if (_fetchedResultsController == nil)
{
NSFetchRequest *fetchRequestList = [[NSFetchRequest alloc] init];
NSEntityDescription *entityList = [NSEntityDescription entityForName:@"List" inManagedObjectContext:self.managedObjectContext];
[fetchRequestLista setEntity:entityList];
TableViewOne *table1 = [[Cobertura alloc]init];
TableViewTwo *table2 = [[Cobertura alloc]init];
if (table1 textFieldShouldBeginEditing:table1.textFieldPressed)
{
fetchRequestList.predicate = [NSPredicate predicateWithFormat:@"%K IN %@", @"reference", arrayTableview1];
}
if (table2 textFieldShouldBeginEditing:table2.textFieldPressed)
{
fetchRequestList.predicate = [NSPredicate predicateWithFormat:@"%K IN %@", @"reference", arrayTableview2];
}
NSSortDescriptor *cellTitle = [[NSSortDescriptor alloc] initWithKey:@"reference" ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:cellTitle, nil];
[fetchRequestLista setSortDescriptors:sortDescriptors];
_fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequestLista managedObjectContext:self.managedObjectContext sectionNameKeyPath:@"referencia" cacheName:nil];
_fetchedResultsController.delegate = self;
self.fetchedResultsController = _fetchedResultsController;
return _fetchedResultsController;
}
各テーブルビューで、メソッド textFieldShouldBeginEditing に「popoverTableview」のインスタンスがあります。
popoverTableview = [self.storyboard instantiateViewControllerWithIdentifier:@"popoverTableview"];
popover = [[UIPopoverController alloc] initWithContentViewController:popoverTableview];
[popover presentPopoverFromRect:textField.bounds inView:textField permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];
popoverTableview.delegate = self;
popoverTableview.popView = self.popover;
したがって、私が tableview1 にいる場合、[NSPredicate predicateWithFormat:@"%K IN %@", @"reference", arrayTableview1]; を取得する必要があります。
tableviewS がアクセスできる何らかのメソッドを作成する必要がありますか? ここで私は何を忘れていますか、または注意を払っていませんか?
事前に感謝します。どんな種類のアドバイスも大歓迎です! よろしく
私と同じ問題を経験していたすべての人にとって、解決するために私が行ったことは次のとおりです。
これは、特定のテキストフィールドが押されたときに popoverview を作成しているときです。
popoverTableview = [self.storyboard instantiateViewControllerWithIdentifier:@"popoverTableview"]initWithTextFieldTag:myTextFieldThatWasPressed.tag]
popover = [[UIPopoverController alloc] initWithContentViewController:popoverTableview];
[popover presentPopoverFromRect:textField.bounds inView:textField permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];
popoverTableview.delegate = self;
popoverTableview.popView = self.popover;
popoverTableview.aIntVariable = myTextFieldThatWasPressed;
次に、私のpopovertableviewで:
- (id)initWithTextFieldTag:(int)textFieldTag
{
self.aIntVariable = textFieldTag;
return self;
}
次に、fetchedResultsController メソッドで、必要な述語を伝える単純な if を作成する必要があります...
よろしく