弹出窗口在tableview中显示在长用户输入表单的顶部

时间:2013-01-19 12:52:04

标签: ios objective-c ipad uipopovercontroller

我已经看过很多关于这方面的问题和答案,但似乎都不适合我正在做的事情。

我有一个相当长的用户输入表单,我使用表格视图(问题的标签和文本视图在表格单元格中),当用户点击具有多选选项的文本视图时,我需要触发弹出窗口(如下拉列表)。 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];
}

1 个答案:

答案 0 :(得分:0)

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