gpt4 book ai didi

ios - rootViewController 和主屏幕快速操作的问题

转载 作者:行者123 更新时间:2023-11-28 23:28:01 25 4
gpt4 key购买 nike

我有以下 Objective-C 代码来使用主屏幕快速操作启动我的应用程序:

- (void)applyShortcutItem:(UIApplicationShortcutItem *)shortcutItem
{
ViewController *rootViewController = (ViewController *)[self.window rootViewController];

NSLog(@"Here %@ - %@", rootViewController, shortcutItem);

if([shortcutItem.type isEqualToString:@"LaunchMode0"])
{
[rootViewController setShortcutAction:LaunchMode0];
}
else if([shortcutItem.type isEqualToString:@"LaunchMode1"])
{
[rootViewController setShortcutAction:LaunchMode1];
}
}

但是,当我尝试使用快速操作启动时,我不断收到运行时错误(无法识别的选择发送到实例)。值得注意的是,正是这两行应用程序似乎出错了:

[rootViewController setShortcutAction:LaunchMode0];[rootViewController setShortcutAction:LaunchMode1];

它似乎不喜欢 rootViewController。从技术上讲,初始 View Controller 是导航 Controller ,但是应用程序启动到我的主视图 Controller (应用程序只有两个 View ,主视图和一个关于页面)。

在我的项目中,该代码之上还有更多代码,但这是给我错误的部分——但让我知道查看其他代码是否有帮助(我不希望该帖子的代码太多).

非常感谢!

编辑:根据要求,这是完整的 NSLog。

2019-09-23 18:18:01.317271-0400 AppName[1719:200993] Here <UINavigationController: 0x108802200> - <UIApplicationShortcutItem: 0x282bd1500; type: Mode1Shortcut, title: Mode 1>
2019-09-23 18:18:01.321819-0400 AppName[1719:200993] -[UINavigationController setShortcutAction:]: unrecognized selector sent to instance 0x108802200
2019-09-23 18:18:01.323462-0400 AppName[1719:200993] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UINavigationController setShortcutAction:]: unrecognized selector sent to instance 0x108802200'
*** First throw call stack:
(0x2045aa98c 0x2037839f8 0x2044c71c8 0x231033220 0x2045b01d4 0x2045b1e6c 0x102c14af0 0x102c148ec 0x230ffdf90 0x2308cc468 0x2308cd150 0x2308cc224 0x2308d0f24 0x230c012b0 0x206f275d8 0x102fecc78 0x102ff0840 0x206f61040 0x206f60cdc 0x206f61294 0x20453c728 0x20453c6a8 0x20453bf90 0x204536ecc 0x2045367c0 0x20673779c 0x231007c38 0x102c076d0 0x203ffa8e0)
libc++abi.dylib: terminating with uncaught exception of type NSException
(lldb)

最佳答案

问题是这样的:

ViewController *rootViewController = (ViewController *)[self.window rootViewController];

但是您已经声明 Root View Controller 是 UINavigationController。您需要从导航 Controller 获取 ViewController

UINavigationController *rootViewController = (UINavigationController *)self.window.rootViewController;
ViewController *viewController = (ViewController *)rootViewController.topViewController;

然后更新其余代码以在 viewController 上工作。

关于ios - rootViewController 和主屏幕快速操作的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58066110/

25 4 0
文章推荐: javascript - 从 objective-c 中的 WKwebview 中删除

Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com