Popover segue不工作

时间:2014-04-11 06:46:12

标签: ios objective-c ipad uitableview storyboard

我正在使用故事板开发一个iPad应用程序。在我的应用程序中,我有2个视图控制器(第一视图控制器和模态视图控制器)。在我的第一个视图控制器中,我有一个表格视图,单元格包含一个按钮。如果我单击每个单元格中的按钮,我需要转到模态视图控制器。我使用segue连接了模态视图控制器和按钮。当风格是模态但是我需要风格Popover时Segue工作得很好。当我试图更改segue样式popover时,会发生storyboard错误并且编译失败。我该如何解决这个问题。

4 个答案:

答案 0 :(得分:3)

如果错误是“无法编译连接...”,则问题是XCode如何处理动态表格单元格视图中的插座。

我建议你有两种选择:

1)如果您可以使用“静态”表视图,则不会出现错误,这样表视图必须位于UITableViewController内。

2)如果你需要一个动态表,那么继承单元格视图并在你的类(比如MyUITableCellView)中放置一个插座:

@property (weak, nonatomic) IBOutlet UIButton *segueButton;

然后在你的故事板中创建一个从原型单元格(MyUITableCellView类)到单元格内按钮的出口(不要在故事板中创建segue,只创建目标视图控制器)。

然后在“cellForRowAtIndexPath”中执行以下操作:

MyUITableCellView *cell = (MyUITableCellView*)[tableView dequeueReusableCellWithIdentifier:@"MyCell"];
/* IMP: Here you should check if button has already this action (reused) */
[cell.segueButton addTarget:self action:@selector(showPopover:) forControlEvents:UIControlEventTouchUpInside];

然后添加操作:

- (void)showPopover:(UIButton*)sender
{
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
    UIViewController *secondVC = [storyboard instantiateViewControllerWithIdentifier:@"secondVC"];  // this is the storyboard id
    self.popover = [[UIPopoverController alloc] initWithContentViewController:secondVC];
    CGRect fromRect = [self.view convertRect:sender.frame fromView:sender.superview];
    [self.popover presentPopoverFromRect:fromRect inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
}

希望这有所帮助。

答案 1 :(得分:3)

按照图像中的步骤操作。希望我会帮助你。

Follow the steps in the image. hope I will help you.

答案 2 :(得分:0)

您是否已加入<UIPopoverControllerDelegate>并已实施?第一次容易忘记。

答案 3 :(得分:0)

可能你可能没有连接Anchor,把UIView放在你的Viewcontroller视图中,背景颜色清晰,并将Segue的Anchor点设置为该视图......