我正在使用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) 我正在将适用于 iPadOS 的 iOS13 应用程序转换为 SceneDelegate(多窗口)。
如何从当前的 SceneDelegate 获取当前的 UIWindow?
我知道 a 可以使用UIView.windowor访问当前场景UIViewController.view.window,但是我有一个非 UI 类(AppDelegate),我需要在其中获取窗口(iOS12 之前的 keyWindow)以在所有内容的顶部显示小吃吧。
我曾经这样做,[UIApplication sharedApplication].keyWindow但现在,当然,这是错误的。
我正在将我的集合视图转换为新的 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)……但根据数据模型,这应该是不可能的。
你有什么提示吗?
我正在将当前的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”而终止应用程序,原因:“移动关联不一致”
这是什么意思?我该如何解决?
我需要 ESP8266 的默认网关 IP 地址。我知道在 LUA 中,您可以使用以下代码检索它:
ip, netmask, gateway = wifi.sta.getip()
print(gateway)
Run Code Online (Sandbox Code Playgroud)
但是如何使用 Arduino/C++?
ios13 ×4
arduino ×1
arduino-ide ×1
esp8266 ×1
ios ×1
nsdiffabledatasourcesnapshot ×1
objective-c ×1
uiscene ×1
uitableview ×1
xcode ×1
xcode11 ×1