ユーザーに特定のファイルがダウンロードされているかどうかを確認するアプリがあります。このコードは、UITableViewCell内から呼び出されますが、最初の行(必要なファイルは常に最初の行にあります)を押すことをシミュレートするために、tableViewを使用してView Controllerを呼び出す方法がわかりません。ここで テーブルビューの行をシミュレートします。TableViewcell Swift
はif (fileLbl.text == baseMapDisplayname) {
let alertController = UIAlertController(title: "Basemap Not Downloaded", message: "Please first download the Offline Basemap", preferredStyle: .alert)
var rootViewController = UIApplication.shared.keyWindow?.rootViewController
if let navigationController = rootViewController as? UINavigationController {
rootViewController = navigationController.viewControllers.first
}
if let tabBarController = rootViewController as? UITabBarController {
rootViewController = tabBarController.selectedViewController
}
alertController.addAction(UIAlertAction(title: "Cancel", style: UIAlertActionStyle.cancel ,handler: nil))
alertController.addAction(UIAlertAction(title: "Download", style: UIAlertActionStyle.default,handler: { (action: UIAlertAction!) in
//TODO - Simulate action of selecting first row of tableview
//this does not work
let indexPath = IndexPath(row: 0, section: 0)
MainVC().tableView.selectRow(at: indexPath, animated: true, scrollPosition: .bottom)
MainVC().tableView.delegate?.tableView!(tableView, didSelectRowAt: indexPath)
}))
rootViewController?.present(alertController, animated: true, completion: nil)
}
MainVCの新しいインスタンスを作成しているようですが、自己を使用できませんか? コントローラのインスタンスが適切な場合は、selectRowが機能するはずです。また、selfがすでにtableview delegateである場合は、代理人は必要ありません。 – silentBob