我正在使用故事板开发一个iPad应用程序。在我的应用程序中,我有2个视图控制器(第一视图控制器和模态视图控制器)。在我的第一个视图控制器中,我有一个表格视图,单元格包含一个按钮。如果我单击每个单元格中的按钮,我需要转到模态视图控制器。我使用segue连接了模态视图控制器和按钮。当风格是模态但是我需要风格Popover时Segue工作得很好。当我试图更改segue样式popover时,会发生storyboard错误并且编译失败。我该如何解决这个问题。
答案 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)
按照图像中的步骤操作。希望我会帮助你。
答案 2 :(得分:0)
您是否已加入<UIPopoverControllerDelegate>
并已实施?第一次容易忘记。
答案 3 :(得分:0)
可能你可能没有连接Anchor,把UIView放在你的Viewcontroller视图中,背景颜色清晰,并将Segue的Anchor点设置为该视图......