在Interface Builder中为Iphone创建popover视图控制器
我该怎么做呢?我知道我必须给popover一个视图控制器,它从中构造视图,但我不知道如何在Interface Builder中构造这个视图(比如添加标签和按钮等等) 我是不是只是在普通的情节提要中做,然后在角落里有一个情节提要,它随机地与其他任何东西都没有连接 我是否要创建另一个故事板 即使我的项目都是故事板,我也要创建一个xib吗在Interface Builder中为Iphone创建popover视图控制器,iphone,ios,objective-c,uipopovercontroller,uistoryboard,Iphone,Ios,Objective C,Uipopovercontroller,Uistoryboard,我该怎么做呢?我知道我必须给popover一个视图控制器,它从中构造视图,但我不知道如何在Interface Builder中构造这个视图(比如添加标签和按钮等等) 我是不是只是在普通的情节提要中做,然后在角落里有一个情节提要,它随机地与其他任何东西都没有连接 我是否要创建另一个故事板 即使我的项目都是故事板,我也要创建一个xib吗 我是按程序创建的吗?因为你的问题中没有指定目标设备,所以我给了你Ipad的答案 IPAD: 转到情节提要拖放viewcontroller或tableviewcont
我是按程序创建的吗?因为你的问题中没有指定目标设备,所以我给了你Ipad的答案 IPAD: 转到情节提要拖放
viewcontroller
或tableviewcontroller
由您决定。然后在情节提要上创建一个从所需的viewcontroller
到新拖放的viewcontroller
的序列。选择您的音乐作为popOver
确保在如上图所示的序列设置中选择锚定。然后,您需要编辑您的popover的大小。如果是uiviewcontroller
选择其视图,如果是tableviewcontroller
选择界面生成器左侧的tableview并编辑其大小
第一:
第二:
之后,自定义您的popover视图控制器(拖放视图控制器)添加按钮,标记您想要的任何内容
如果要在popover中执行其他操作:
不要忘记创建uiviewcontroller或uitableviewcontroller的新文件->子类。然后将其与故事板上新创建的viewcontroller关联
IPHONE:
iphone中没有Popover控制器
但您尝试使用第三方解决方案,通过使用QuartzCore
我会尝试以下方法:
第一:
再次将uiviewcontoller
拖放到情节提要上,然后创建uiviewcontroller
的新文件->子类
这个新的uiviewcontroller
将位于故事板的一角
然后将情节提要中的uiviewcontroller与新创建的文件相关联,假设您使用YourViewController
创建了一个新文件名。为视图提供情节提要id并选择其类名
-(IBAction)buttonClicked:(UIButton*)okButton
{
//the view controller you want to present as popover
YourViewController *controller = [[YourViewController alloc] init];
//if [[YourViewController alloc] init]; doesn't work try this
// UIStoryboard* sb = [UIStoryboard storyboardWithName:@"MainStoryboard"
bundle:nil];
//YourViewController *controller = [sb instantiateViewControllerWithIdentifier:@"YourViewController"];
//our popover
FPPopoverController *popover = [[FPPopoverController alloc] initWithViewController:controller];
//the popover will be presented from the okButton view
[popover presentPopoverFromView:okButton];
//no release (ARC enable)
//[controller release];
}
注意:我以前没有使用过FPPopover,所以不知道如何安排屏幕大小,但他们的文档中必须有进一步的解释,请阅读 我认为iPhone设备的更好方法是,创建一个视图控制器,其视图的背景颜色设置为“清除”。然后,在这个视图中,您只需添加一个较小的视图,它将显示一个弹出窗口
显示此视图控制器将显示一个弹出窗口。这就是我采取的方法。如果用户点击父视图上较小视图边界之外的区域,您可以关闭视图控制器。iPhone解决方案 因为iOS 8.0也可以在iPhone应用程序中实现这一点 目标视图控制器(应该出现在popover中的控制器)需要符合“UIPopoOverPresentationControllerDelegate”协议,并且必须实现消息“adaptivePresentationStyleForPresentationController:traitCollection:”。除此之外,its的“modalPresentationStyle”应该是“UIModalPresentationPopover”,控制器应该是他自己的“UIPopoverPresentationController”委托 以这种方式准备视图控制器后,只需从UINavigationBarItem(或其他任何内容)到目标视图控制器创建一个故事板序列(键入:“Present As Popover”) 实施:
@implementation TestViewController
/*
initWithCoder:
*/
- (instancetype)initWithCoder:(NSCoder *)pDecoder {
//FLog;
if (self = [super initWithCoder:pDecoder]) {
self.modalPresentationStyle = UIModalPresentationPopover;
self.popoverPresentationController.delegate = self;
}
return self;
}
#pragma mark - POPOVER PRESENTATION CONTROLLER DELEGATE
/*
adaptivePresentationStyleForPresentationController:traitCollection:
*/
- (UIModalPresentationStyle)adaptivePresentationStyleForPresentationController:(UIPresentationController *)pController
traitCollection:(UITraitCollection *)pTraitCollection {
//FLog;
return UIModalPresentationNone;
}
// ...
@end
当然,委托协议也可以在其他类中实现,但这种方法是最简单的:-)它将在应用程序中的多个位置显示,还是仅在一个位置显示?非常好,谢谢。但是,如果我使用的是FPPopover库(iPad popover的iPhone端口),它只需要一个popover视图,我可以创建一个普通的segue吗?如果你不知道的话,我完全理解,我错误地认为两者都是一样的(大多数事情似乎都是一样的)。@DougSmith是的,ipad和iphone并非一切都是一样的,所以你不能在iphone情节提要中创建popover segue。当您尝试在iphone中执行segue(推送,模式)时,segue将替换当前视图,因此无法工作。如果你尝试定制segue,也许你能做到,但我怀疑。因此,您无法使用segue for Iphone进行此操作,我将尝试编辑我的答案,并为您提供可能的解决方案。@DougSmith尝试我的Iphone答案,但不确定是否有效。@SpaceDust您好,我已完成弹出视图。问题是,我在弹出视图中有一个按钮。当我按下该按钮时,弹出视图将被取消。我试了一天,但找不到解决办法。你的任何想法都会对我很有帮助。非常感谢。@Vino在您的buttons方法调用中
[self-dismissViewControllerAnimated:YES completion:NULL]代码>如果这不起作用,发布一个问题,我相信如果你展示你的代码,人们会回答它