【问题标题】:How to push a modal view from didFinishPickingMediaWithInfo如何从 didFinishPickingMediaWithInfo 推送模态视图
【发布时间】:2011-01-29 00:06:37
【问题描述】:

我有一个 imagePickerController,它允许用户拍摄或选择图像。 在 - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info;我想触发打开另一个模态视图来捕获标题。我有一个为此目的的电话...

-(void) getcaption:(id) obj {
    textInput * ti = [[textInput alloc] initWithContent:@"" header:@"Caption for photo" source:2];
    ti.delegate = self;
    [self presentModalViewController:ti animated:YES];
    [ti release];
}

问题是如何调用getcaption而不触发螺旋式

#6663 0x324abb18 在 -[UIView(Hierarchy) _makeSubtreePerformSelector:withObject:withObject:copySublayers:] ()

我现在有

[self performSelector:@selector(getcaption:)  withObject:nil afterDelay:(NSTimeInterval)1];

在 didFinishPickingMediaWithInfo 中 这很糟糕,而且只有 95% 可靠

【问题讨论】:

    标签: iphone objective-c pushviewcontroller


    【解决方案1】:

    我认为问题在于您试图在旧视图关闭之前显示您的新视图?我假设您在显示两个模态视图的父视图控制器中,它是父视图。如果是这种情况,您应该显示新模态视图的时间点是父视图完全隐藏先前的模态视图。具体来说,这发生在

    - (void) viewDidAppear:(BOOL)animated
    

    当然,您需要确保仅在前一个模态视图完成后才显示第二个模态视图(也就是说,当父视图出于任何其他原因出现时不要显示它)

    【讨论】:

    • 谢谢埃德。我认为可能是这种情况,我想避免这种情况,因为我不确定如何构建该触发器。我的蛮力方法将在视图控制器中有一个属性:即获取 didFinishPickingMediaWithInfo 设置属性,例如 bool viewWillAppearShouldRequestCaption 并在 viewWillAppear 中使用它来触发显示。有没有更好的架构来请求这种东西?
    • 任何更好的架构都会比这更复杂,而你所建议的就是我会采用的。
    • 这种工作。我仍然需要使用 performSelector:withObject:AfterDelay: from viewDidAppear: 否则如果我直接调用它,我会得到一个 EXEC BAD ACCESS,就像所有视图都出现一样。我不高兴我已经深究了这件事。 (我在第一条评论中也说过 ViewWillAppear - 我的意思是 ViewDidAppear)
    • 可能只是需要在运行循环的下一次迭代中安排它。如果是这样的话,即使是 0 的延迟也可能就足够了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-13
    • 1970-01-01
    • 1970-01-01
    • 2012-12-22
    • 2011-12-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多