我已经看过很多关于这方面的问题和答案,但似乎都不适合我正在做的事情。
我有一个相当长的用户输入表单,我使用表格视图(问题的标签和文本视图在表格单元格中),当用户点击具有多选选项的文本视图时,我需要触发弹出窗口(如下拉列表)。 popover似乎是从tableviewcontroller的顶部呈现的,我不知道如何计算放置它的位置,因此它位于单元格中单击的textview上。单元格中可以有多个文本视图,所以当选择单元格时,我宁愿不显示弹出窗口,这似乎是一个选项。
现在,当我单击表单底部的textview时,弹出窗口甚至都不可见。我知道我可以在硬编码边界上找到正确的试验和错误的矩形,但必须有一种方法来一致地计算这个。
我像这样点燃了弹出窗口:
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
Boolean returnVal = YES;
if(self.popOverController == nil){
switch(textField.tag)
{
case 1:
[self fireDisciplinePopOver:[textField bounds]];
returnVal = NO;
break;
case 2:
etc...
default:
break;
}
}
return returnVal;
}
-(void)fireDisciplinePopOver:(CGRect)rect
{
UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle: nil];
ICAMDisciplineTableViewController *popoverTable = (ICAMDisciplineTableViewController*)[mainStoryboard instantiateViewControllerWithIdentifier: @"DisciplineController"];
self.popOverController = [[UIPopoverController alloc]initWithContentViewController:popoverTable];
self.popOverController.delegate = self;
popoverTable.delegate = self;
[self.popOverController presentPopoverFromRect:rect inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
}
答案 0 :(得分:0)
我用segue来呈现一个popover。 segue包括弹出框的锚视图。我所做的只是将那里的popover锚定。我认为这对你有用。