- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
如果我的应用程序是通过 Firebase 发送的通知打开的,我目前正在尝试立即对新的 ViewController 执行 segue。
我正在尝试使用代码 self.performSegue(withIdentifier: "testSegue", sender: nil)
执行转场,其中“testSegue”是我的 Storyboard中转场的标识符从 ViewController 到 SecondViewController(不同的类)。
问题是这条线导致我的应用程序崩溃,由于我是从通知启动应用程序,而不是从 Xcode 启动应用程序,因此我无法轻松调试它。
我还通过添加一个计时器来延迟代码,该计时器在 5 秒后运行该行,以确定发生崩溃时它在该行,并且还尝试使用 present(viewControllerToPresent: ...)
。
如果有人能指出发生崩溃的原因,或者在这种情况下如何调试错误,或者让它自动进入我需要的 ViewController 的任何替代方法,那就太好了,谢谢。
AppDelegate.swift 中的一些附加代码:
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable: Any],
fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
print(userInfo)
let url = userInfo["url"]
print("url is: \(String(describing: url))")
if url != nil {
vc.defaults.set("\(String(describing: url))", forKey: "urlDef")
vc.defaults.set(true, forKey: "hasRun")
initialVC.testingFunc()
print("Func done")
}
completionHandler(UIBackgroundFetchResult.newData)
print("Func finished")
}
ViewController.swift 中的一些附加代码
var funcTimer = Timer()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
func testingFunc() {
funcTimer = Timer.scheduledTimer(timeInterval: 5, target: self, selector: #selector(self.triggerSegue), userInfo: nil, repeats: false)
print("The timer has begun")
}
func triggerSegue() {
print("Trigger segue func has begun")
self.performSegue(withIdentifier: "testSegue", sender: nil)
}
最佳答案
在呈现 viewController 时切换到主线程。
func triggerSegue() {
DispatchQueue.main.async {
self.performSegue(withIdentifier: "testSegue", sender: nil)
}
}
关于ios - 尝试使用 performSegue 时应用程序崩溃(withIdentifier : , 发件人:),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46051061/
根据官方文档,有两种方法可以从tableView的队列中获取可重用的cell。一个是 dequeueReusableCell(withIdentifier:for:),另一个是 dequeueReus
长话短说,我的 segue 无法执行到我已经创建的下一个 Controller 。很多帮助将不胜感激。 override func viewDidLoad() { super.
我正在尝试调用一种在创建事件时获取日历的方法。我确定这种方法是为了使用 calendarWithIdentifier 获取 的 ID 这是我创建事件和调用获取日历的方法的代码。我需要调用一个特定的日历
我的自定义导航栏中有一个菜单表格 View 。如果我单击一个单元格,它应该将我带到另一个 View Controller 。但是当我点击它时我的应用程序崩溃了。 func tableView(_ ta
我有一个 tableView ,其中包含使用继承的单元格。有一个共同的祖先,然后有几种具体的实现。公共(public)类不会重写 init(style:reuseIdentifier:) ,而是定义自
swift 3.0 根据我在这里的发现,UIStoryboard 总是在函数 instantiateViewController(withIdentifier:) 中返回非可选实例。 open cla
这是 Xcode 8.2 的屏幕截图: 如果该函数不存在,现在如何将标识符添加到 View Controller ? 最佳答案 改用instantiateViewController(withIden
这个问题已经有答案了: Catching NSException in Swift (6 个回答) 已关闭 3 年前。 我有如下代码: if let vc = NSStoryboard.main?.i
我必须显示几个不同的单元格。为此,我调用了 tableView(_:cellForRowAt:),并在该方法中为 UITableViceCell 的不同类使用了两个不同的 ID。 这是一个简单的代码:
我有一个 viewController 来处理对 oAuth API 的用户身份验证。如果 user.defaults 中有存储的 token ,则此 block 运行 FRDStravaClient
为什么我们需要在使用 UIStoryboard 的 instantiateViewController(withIdentifier:) 方法实例化 View Controller 之后使用关键字进行
如果我的应用程序是通过 Firebase 发送的通知打开的,我目前正在尝试立即对新的 ViewController 执行 segue。 我正在尝试使用代码 self.performSegue(with
在 dequeueReusableCell(withIdentifier: for:) 步骤中,我无法将我的表格 View 单元格转换为自定义表格 View 单元格。 我的代码: override f
Xcode 7.3 has deprecated XCPlaygroundPage.currentPage.captureValue(_:withIdentifier:)。它的前身 XCPCaptur
在 中测试我的应用程序Xcode 11(测试版)为 iOS-13(测试版)更新,当我尝试从 Storyboard实例化 viewController 时,我崩溃了。 在以前的版本中,使用以下代码可以正
到目前为止,我遇到的大多数 UIPageViewController 教程都会在滑动到所需页面时动态创建 UIViewController。 未优化的 UIPageViewController 示例
我试图理解两个 View Controller 之间的通信。 在没有 segue 的情况下传递数据时,我看到了两种创建目标 Controller 实例的方法。 第一个是storyboard?.inst
从sb.instantiateViewController(withIdentifier:)创建一个vc10,不能使用它的属性甚至将它的类型转换为ViewController10 。 下面是我的代码:
当我尝试在我的“添加”表单中打开一个表项进行更新时,我收到了这条后续消息。 Terminating app due to uncaught exception 'NSInvalidArgumentEx
我正在尝试做的事情: 检查条件,如果条件为真,则执行 segue普通的。如果条件为假,调用 shouldPerformSegue 方法并返回 false 以取消 segue。 我是如何尝试做到这一点的
我是一名优秀的程序员,十分优秀!