Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.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 打开Modal时,视图将消失_Ios_Objective C_Animation_Uiview_Modal Dialog - Fatal编程技术网

Ios 打开Modal时,视图将消失

Ios 打开Modal时,视图将消失,ios,objective-c,animation,uiview,modal-dialog,Ios,Objective C,Animation,Uiview,Modal Dialog,我有一个基本的故事板,其中包含一个子视图和一些标签来显示信息。此视图隐藏在屏幕外,当用户播放/暂停音乐时,会弹出或关闭。此视图从屏幕底部开始,并相应地设置动画 屏幕上的另一个按钮打开一个模式窗口。打开此模式时,带有标签的子视图将在屏幕外返回其初始状态。我的主视图控制器中的通知中心已成功检测到此模式何时关闭,但如果正在播放音乐,它将调用相应的函数以再次显示子视图。但是,由于某些原因,视图将不会设置动画,即使我在没有动画的情况下直接设置值。但按“暂停/播放”后,它将按预期再次出现 我假设我必须使用一

我有一个基本的故事板,其中包含一个子视图和一些标签来显示信息。此视图隐藏在屏幕外,当用户播放/暂停音乐时,会弹出或关闭。此视图从屏幕底部开始,并相应地设置动画

屏幕上的另一个按钮打开一个模式窗口。打开此模式时,带有标签的子视图将在屏幕外返回其初始状态。我的主视图控制器中的通知中心已成功检测到此模式何时关闭,但如果正在播放音乐,它将调用相应的函数以再次显示子视图。但是,由于某些原因,视图将不会设置动画,即使我在没有动画的情况下直接设置值。但按“暂停/播放”后,它将按预期再次出现

我假设我必须使用一些适当的回调函数,以便只有在视图准备好重画或其他什么之后才调用动画?在下面找到打开my modal的方法以及关闭时调用的方法

// open modal from a .xib
- (IBAction)openModal:(id)sender {
    ifmSettingsViewController* svc = [[ifmSettingsViewController alloc] initWithNibName:@"Settings" bundle:nil];
    [svc setModalPresentationStyle:UIModalPresentationFullScreen];
    [svc setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal];

    [[NSNotificationCenter defaultCenter] addObserver:self
        selector:@selector(didDismissSecondViewController)
        name:@"SecondViewControllerDismissed"
        object:nil];
    [self presentViewController:svc animated:TRUE completion:nil];
}
// called when modal window dismissed
-(void)didDismissSecondViewController {
    NSLog(@"Dismissed SecondViewController");
    [self viewDidAppear:TRUE];
    // calculate appropriate distance from screen bottom
    float yer = [[UIScreen mainScreen] bounds].size.height - 101.0;
    self.infoview.center = yer;
}
在模式中,它按如下方式关闭自身:

- (IBAction)backHit:(id)sender {
    [self dismissViewControllerAnimated:TRUE completion:^{
        [[NSNotificationCenter defaultCenter] postNotificationName:@"SecondViewControllerDismissed"
            object:nil
            userInfo:nil
        ];
        return;
    }];
}