我在我的ipad应用程序中使用storyboard并成功完成转换,使用segues等。 目前我在点击按钮时显示弹出视图控制器。我想检测一下流行音乐何时解散。 我该怎么办?
答案 0 :(得分:14)
这是我做的:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([[segue identifier] isEqualToString:@"popover"])
{
UIStoryboardPopoverSegue *pop = (UIStoryboardPopoverSegue*)segue;
pop.popoverController.delegate = self;
}
}
答案 1 :(得分:7)
现在我的启示是你在谈论UIPopoverController
,以下是步骤:
UIPopoverController
(我假设“发件人”视图控制器)UIPopoverControllerDelegate
– popoverControllerDidDismissPopover:
消息,并在此处有任何检测逻辑实施- prepareForSegue:sender:
并使用segue的destinationController
获取引用并设置委托,如下所示:
((MyViewController *)segue.destinationController).delegate = self;
- prepareForSegue:sender:
(请参阅UIViewController documentation
)prepareForSegue:sender:
dismissModalViewControllerAnimated:
这就是我接近这个的方法。我还建议使用正式的协议来使您的发送视图控制器符合。
答案 2 :(得分:4)
在视图控制器中创建一个segue:
@property (strong, nonatomic) UIStoryboardPopoverSegue* popSegue;
在XIB中,为视图创建一个名为“popover”的标识符。
在Interface中,编写以下代码:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if( [[segue identifier] isEqualToString:@"popover"] )
{
//[[segue destinationViewController] setDelegate:self];
NSLog(@"%@",[[segue destinationViewController] viewControllers]);
self.popSegue = (UIStoryboardPopoverSegue*)segue;
.
.
.
}
编写以下代码以通过编码来解除弹出:
[self.popSegue.popoverController dismissPopoverAnimated:YES];
答案 3 :(得分:1)
由于iOS 9中不推荐使用UIStoryboardPopoverSegue
,因此您可以使用UIStoryboardPopoverPresentationSegue
。
然后在prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)
中,您可以像这样设置委托:
if let identifier = segue.identifier where identifier == "showPopover" {
let destVC = segue.destinationViewController as! UIViewController
destVC.popoverPresentationController?.delegate = self
}
答案 4 :(得分:0)
问题的Objective-C代码如下。
if ([segue.identifier isEqualToString:@"home_login"])
{
UIViewController *dest = segue.destinationViewController;
dest.popoverPresentationController.delegate = self;
}
- (BOOL) popoverPresentationControllerShouldDismissPopover:(UIPopoverPresentationController *)popoverPresentationController
{
return NO;
}