小编Fab*_*oft的帖子

如何在iPadOS多窗口(SceneDelegate)中获得rootViewController?

我正在使用Xcode 11(beta3)并为iOS 13构建应用程序。在我的项目中,我创建了UIWindowSceneDelegate在Info.plist中声明它的委托方法。现在,我可以创建多个窗口(和UIScene)。

现在我已经没有单个窗口了,如何访问rootViewController?我需要它来获取对它所持有的对象和范围的一些引用。

在我的AppDelegate window is nil和ViewController(子视图控制器)实例中,我尝试使用,self.view.window.rootViewController但发现这viewDidLoad()还为时过早(我认为),并且该窗口仍为nil,可以在中工作viewDidAppear(),但是我不需要每次都进行此过程视图控制器出现的时间。

这种处理应用程序场景的新方法的最佳实践是什么?

这是我的AppDelegate:

func application(_ application: UIApplication,
                     didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil) -> Bool {
        return true
    }

    func application(_ application: UIApplication,
                     configurationForConnecting connectingSceneSession: UISceneSession,
                     options: UIScene.ConnectionOptions) -> UISceneConfiguration {
        return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role)
    }
Run Code Online (Sandbox Code Playgroud)

我的SceneDelegate:

func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
        // yes it's empty, I'm using storyboard
    }
Run Code Online (Sandbox Code Playgroud)

ios13 xcode11 uiscenedelegate

8
推荐指数
2
解决办法
1249
查看次数

如何获得多窗口 SceneDelegate Xcode 11 的当前 keywindow 等效项?

我正在将适用于 iPadOS 的 iOS13 应用程序转换为 SceneDelegate(多窗口)。

如何从当前的 SceneDelegate 获取当前的 UIWindow?

我知道 a 可以使用UIView.windowor访问当前场景UIViewController.view.window,但是我有一个非 UI 类(AppDelegate),我需要在其中获取窗口(iOS12 之前的 keyWindow)以在所有内容的顶部显示小吃吧。

我曾经这样做,[UIApplication sharedApplication].keyWindow但现在,当然,这是错误的。

xcode ios13 uiscenedelegate uiscene

7
推荐指数
3
解决办法
6621
查看次数

iOS13 DiffableDataSource 无效参数不满足:indexPath || 忽略无效项目

我正在将我的集合视图转换为新的 iOS13 UICollectionViewDiffableDataSource ......所以我需要根据需要更新单元格信息。

这是我的代码:

let snap = self.diffDataSouce.snapshot
snap?.reloadItems(withIdentifiers: [itemToUpdate]) //reload cell info
self.diffDataSouce.apply(snap, animatingDifferences: true)
Run Code Online (Sandbox Code Playgroud)

但我明白了Invalid parameter not satisfying: indexPath || ignoreInvalidItems……为什么?我的当前snap包含itemToUpdate以及我的模型数组...

我认为这是因为snap.indexOfItemIdentifier(itemToUpdate)未找到返回值(NSNotFound)……但根据数据模型,这应该是不可能的。

你有什么提示吗?

ios ios13 diffabledatasource nsdiffabledatasourcesnapshot

7
推荐指数
1
解决办法
2483
查看次数

iOS 13上TableView错误的可疑数据源:移动关联不一致

我正在将当前的UITableview更新为iOS 13提供的可扩散数据源UITableViewDiffableDataSource

我有一个带有自定义对象的数组(实现isEqual:方法)。在viewWillAppear上,我从磁盘加载数据并致电申请快照。

-(void)updateTableViewAnimated:(BOOL)animated API_AVAILABLE(ios(13.0)){
    NSDiffableDataSourceSnapshot *snapshot = [[NSDiffableDataSourceSnapshot alloc]init];
    [snapshot appendSectionsWithIdentifiers:@[@"sectionTitle"]];
    [snapshot appendItemsWithIdentifiers:self.playlists];
    [self.diffDataSource applySnapshot:snapshot animatingDifferences:animated];
}
Run Code Online (Sandbox Code Playgroud)

一切都加载了。但是,当尝试从数组中删除项目并再次调用时updateTableViewAnimated:,出现异常。

***由于未捕获的异常“ NSInvalidArgumentException”而终止应用程序,原因:“移动关联不一致”

这是什么意思?我该如何解决?

objective-c uitableview ios13

6
推荐指数
2
解决办法
277
查看次数

使用 ESP8266 在 Arduino 中获取网关地址

我需要 ESP8266 的默认网关 IP 地址。我知道在 LUA 中,您可以使用以下代码检索它:

ip, netmask, gateway = wifi.sta.getip()
print(gateway)
Run Code Online (Sandbox Code Playgroud)

但是如何使用 Arduino/C++?

arduino arduino-ide esp8266

3
推荐指数
1
解决办法
4185
查看次数