这对我来说是一个大问题,我仍然坚持它,所以我希望有人能给我一些指导。
我所拥有的是:
- 3 个具有多个单元格的表格视图,每个单元格具有多个文本字段。
- 每次按下这些单元格上的特定文本字段时,就会出现在弹出框内的 1 个表格视图。这个表视图有所有!从我的数据库中检索必要数据的核心数据方法。
一切正常...但是我需要区分 tableview 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 可以访问的方法吗?我在这里忘记了什么或没有注意什么?
提前致谢,欢迎提出任何建议!问候
对于遇到与我相同的问题的每个人,这是我为解决而采取的措施:
这是我在按下特定文本字段时创建弹出视图时:
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 来告诉您想要的谓词...
问候