根据https://developer.dji.com/api-reference/ios-uilib-api/Widgets/PreFlightStatusWidget.html:
“点击状态文本将在显示和隐藏DUXPreflightChecklistController之间切换。”
当我点击小部件中的状态文本时,不会显示DUXPreflightChecklistController。另外,如果我手动显示DUXPreflightChecklistController,则面板的右上角有一个关闭按钮,但是点击它不会隐藏面板。
配置此面板的正确方法是什么?
我正在将DJISDK 4.7.1和DJIUXSDK 4.7.1与Swift和iOS 12 / xCode 10.0结合使用。
为了提供更多细节,我不想使用默认布局,但是我正在使用DUXStatusBarViewController。那是嵌入在我应用顶部的UIView中。我找不到该控制器的任何属性,该属性使我无法将其连接到我的DUXPreflightChecklistController实例,该实例也嵌入在UIView中。
答案 0 :(得分:0)
对于:DUXPreflightChecklistController
我已经解决了
var preflightChecklistController: DUXPreflightChecklistController!
weak var preFlightTableView: UITableView!
private var compassItemIndex: Int = -1
private var storageItemIndex: Int = -1
override func viewDidLoad() {
super.viewDidLoad()
preflightChecklistController = DUXPreflightChecklistController()
addChild(preflightChecklistController)
}
func renderChecklist() {
if let checklistVC = preflightChecklistController {
for subview in checklistVC.view.subviews {
if subview.isKind(of: UITableView.self) {
if let tableView = subview as? UITableView {
self.view.addSubview(tableView)
preFlightTableView = tableView
}
}
}
guard let checklistManager = checklistVC.checklistManager else { return }
let itemList = checklistManager.preFlightChecklistItems
for (index, item) in itemList.enumerated() {
if let _ = item as? DUXStorageCapacityChecklistItem {
storageItemIndex = index
}
if let _ = item as? DUXCompassChecklistItem {
compassItemIndex = index
}
}
preFlightTableView.reloadData()
checklistManager.startCheckingList()
}
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(true)
renderChecklist()
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
guard preFlightTableView != nil else { return }
if let compassCell = preFlightTableView.cellForRow(at: IndexPath(item: compassItemIndex, section: 0)) {
for view in compassCell.subviews {
if let button = view as? UIButton, button.titleLabel?.text == "Calibrate" {
button.addTarget(self, action: #selector(doActionForSpecifiedBTN(sender:)), for: .touchUpInside)
break
}
}
}
if let storageCell = preFlightTableView.cellForRow(at: IndexPath(item: storageItemIndex, section: 0)) {
for view in storageCell.subviews {
if let button = view as? UIButton, button.titleLabel?.text == "Format" {
button.addTarget(self, action: #selector(doActionForSpecifiedBTN(sender:)), for: .touchUpInside)
break
}
}
}
}
@objc func doActionForSpecifiedBTN(sender: UIButton) {
guard let btnTitle = sender.titleLabel else { return }
switch btnTitle.text {
case "Calibrate":
// your func goes here
case "Format":
// your func goes here
default:
break
}
}