Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/111.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 情节提要-作为UIPopoverController打开UIViewController_Ios_Iphone_Objective C_Xcode_Uiviewcontroller - Fatal编程技术网

Ios 情节提要-作为UIPopoverController打开UIViewController

Ios 情节提要-作为UIPopoverController打开UIViewController,ios,iphone,objective-c,xcode,uiviewcontroller,Ios,Iphone,Objective C,Xcode,Uiviewcontroller,对于我的iPad版本的应用程序,我希望通过单击按钮以UIPopoverController的形式打开我的UIViewController。下面是打开视图控制器的实际代码。如何轻松地将此类代码转换为打开UIViewController作为uipopcovercontroller 代码: 使用类似于: if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { UIPopoverController *poc = [[UIPopov

对于我的iPad版本的应用程序,我希望通过单击按钮以
UIPopoverController
的形式打开我的
UIViewController
。下面是打开视图控制器的实际代码。如何轻松地将此类代码转换为打开
UIViewController
作为
uipopcovercontroller

代码:

使用类似于:

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
    UIPopoverController *poc = [[UIPopoverController alloc] initWithContentViewController:aboutView];
    [poc presentPopoverFromRect:CGRectMake(somePoint.x, somePointY, 1.0, 1.0) inView:self.view permittedArrowDirections: UIPopoverArrowDirectionAny animated:YES];
} else {
    aboutView.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
    [self presentViewController:aboutView animated:YES completion:NULL];
}
您还可以通过按钮显示Popor,还可以控制Popor的显示方向。如果您使用
uipopopoverarrowdirectionany
,iOS将做出明智的决定,使popover可见

您还应该保留对您的popover的强引用,并且只在它为
nil
时显示它,以确保popover只显示一次。这意味着如果popover被解除,请将保存它的属性设置为
nil

使用类似以下内容:

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
    UIPopoverController *poc = [[UIPopoverController alloc] initWithContentViewController:aboutView];
    [poc presentPopoverFromRect:CGRectMake(somePoint.x, somePointY, 1.0, 1.0) inView:self.view permittedArrowDirections: UIPopoverArrowDirectionAny animated:YES];
} else {
    aboutView.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
    [self presentViewController:aboutView animated:YES completion:NULL];
}
您还可以通过按钮显示Popor,还可以控制Popor的显示方向。如果您使用
uipopopoverarrowdirectionany
,iOS将做出明智的决定,使popover可见


您还应该保留对您的popover的强引用,并且只在它为
nil
时显示它,以确保popover只显示一次。这意味着,如果popover被解除,请将保持它的属性设置为
nil

一个常见的解决方案是有两个故事板,一个用于iPhone,一个用于iPad。这样,您就可以在iPad故事板中使用popover segue,在iPhone故事板中使用modal segue。您可以随时安排Info.plist,以便在启动时自动加载正确的故事板。不过,您仍然需要一些条件代码,因为您的代码对显示视图控制器的响应与使用popover不同。

常见的解决方案是使用两个故事板,一个用于iPhone,一个用于iPad。这样,您就可以在iPad故事板中使用popover segue,在iPhone故事板中使用modal segue。您可以随时安排Info.plist,以便在启动时自动加载正确的故事板。不过,您仍然需要一些条件代码,因为您的代码对显示的视图控制器的响应与使用popover控制器的响应不同。

只需在故事板中使用popover segue,也只需在故事板中使用popover segue,知道如何取消它就好了。我会认为[自我否定:是的];执行此技巧,但编译器没有看到它,因为它是一个视图控制器。Apple关于dismissPopoverAnimated:
您可以使用此方法以编程方式关闭popover,以响应popover窗口内的点击。点击popover内容之外的内容会自动关闭popover。
因此,如果需要在代码中关闭它,则需要在popover viewcontroller本身上调用它,而不是在演示器上调用它。此外,如果poc自动解除,请使用其委托方法
-(void)PopOvercontrollerdDismissPopOver:(UIPopoverController*)popoverController
将指向它的指针设置为nil,如答案中所述。此外,知道如何解除它也很好。我会认为[自我否定:是的];执行此技巧,但编译器没有看到它,因为它是一个视图控制器。Apple关于dismissPopoverAnimated:
您可以使用此方法以编程方式关闭popover,以响应popover窗口内的点击。点击popover内容之外的内容会自动关闭popover。
因此,如果需要在代码中关闭它,则需要在popover viewcontroller本身上调用它,而不是在演示器上调用它。此外,如果poc自动解除,请使用其委托方法
-(void)PopOvercontrollerdDismissPopOver:(UIPopoverController*)popoverController
将指向它的指针设置为nil,如回答中所述。