0

我已经查看了很多关于此的问题和答案,但似乎没有一个适合我正在做的事情。

我用表格视图制作了一个相当长的用户输入表单(问题的标签和文本视图在表格单元格中),当用户单击具有多选选项的文本视图(如下拉列表)时,我需要触发弹出窗口。弹出框似乎是从 tableviewcontroller 的顶部呈现的,我不确定如何计算放置它的位置,因此它位于单元格中单击的 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];
}
4

1 回答 1

0

我使用 segue 来呈现一个弹出框。segue 包括弹出框的锚视图。我所做的只是将弹出框固定在那里。我认为这应该对你有用。

于 2013-03-23T17:30:13.867 回答