有谁能给我一个示例代码,我可以用它先展示一个模态视图控制器,然后再忽略它吗?这就是我一直在try 的:

NSLog(@"%@", blue.modalViewController);
[blue presentModalViewController:red animated:YES];
NSLog(@"%@", blue.modalViewController);
[blue dismissModalViewControllerAnimated:YES];
NSLog(@"%@", blue.modalViewController);

这段代码在viewDidLoad中("蓝色"和"红色"都是UIViewController的子类).我希望我会显示红色视图,然后立即隐藏它,带有一些动画.然而,这段代码只显示了模态视图,并没有忽略它.知道吗?第一个日志(log)显示为"null",而另外两个日志(log)显示为<RedViewController: 0x3d21bf0>

另一点是,如果我把这段代码放在ApplicationIDFinishLaunching中:红色视图根本不会出现,所有日志(log)都会显示"null"

推荐答案

首先,当您将该代码放入application ationDidFinishLaunching时,从Interface Builder实例化的控制器可能还没有链接到您的应用程序(因此"红色"和"蓝色"仍然是nil).

但是要回答您最初的问题,您做错的地方是您在错误的控制器上呼叫dismissModalViewControllerAnimated:!应该是这样的:

[blue presentModalViewController:red animated:YES];
[red dismissModalViewControllerAnimated:YES];

通常情况下,"红色"控制器应该在某个时刻(可能是在单击"取消"按钮时)决定解雇自己.然后"red"控制器可以调用self上的方法:

[self dismissModalViewControllerAnimated:YES];

如果仍然不起作用,可能与控制器以动画方式呈现有关,因此可能不允许您在呈现控制器后这么快就将其解除.

Ios相关问答推荐

SwiftUI SF Symbols图像:暗模式图像

如何将Safari调试器附加到Turbo-iOS原生应用中的模拟器

错误地提取问题的答案选项

更改订单时如何保存商品的位置?

iOS 16.4 更新后 Xcode 14.3 构建错误:找不到 libarclite_iphoneos.a,链接器命令失败

更新 flutter 和 xcode 后 Xcode 14.3 中缺少文件 (libarclite_iphoneos.a)

Toast 不显示 Flutter

在 Swift 中映射 MySQL 数据

错误:无法根据成员environmentObject推断上下文基础

搜索在 ios xamarin.forms 中不起作用

iOS 中是否有用于自定义振动的 API?

try 在 iOS 中处理后退导航按钮操作

如何使用 swift 添加速率按钮的链接?

iOS 7 圆形框架按钮

iOS UITextView 或 UILabel 带有可点击的动作链接

Swift - 获取设备的 WIFI IP 地址

由于 GoogleSignIn、AdMob 提交应用程序时 iOS 10 GM 发布错误应用程序try 在没有使用说明的情况下访问隐私敏感数据

在 UITableViewController 中使用 UISearchDisplayController 时断言失败

Parse for iOS:try 运行应用程序时出错

值/对象的 NSDictionary 键?