我的代碼在用戶觸摸表格視圖中的一行時以編程方式呈現視圖控制器。代碼駐留在「didSelectRowtIndex」路徑中,表視圖駐留在ViewController類中,在該類中實現了表視圖代表。我遇到的問題是我試圖呈現的視圖控制器只出現在表格視圖行的第二次觸摸上。但是,當父視圖控制器首次加載時,它們會在第一次觸摸時出現。下面是對兩個子視圖控制器的呈現在「didSelectRowAtIndexPath方法」的代碼:ViewController演示Swift 3
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if indexPath.row == 0 {
let stockTable = StockTableVC()
self.present(stockTable, animated: false, completion: nil)
}
else indexPath.row == 1 {
let accountTable = AccountTableVC()
self.present(accountTable, animated: false, completion: nil)
}
...
兩個本視圖控制器方法以上被呼籲行選擇每一次,但somtimes沒有提出關於第一次選擇(或者至少它們不可見)。任何有關這個謎的幫助都會很棒。
-Thanks
有趣。謝謝,上面的取消選擇行解決方案很好,但如果我遇到問題,我會嘗試後者。 – jdeckman
如果延遲超過0.1,該怎麼辦?該應用會崩潰。爲什麼大多數建議使用這個比取消選擇行? –
@JuanCurti這不是關於時機;這是關於線程。因此,即使較短的延遲也能可靠地工作。我在這裏使用的技術是我們退出主線程並允許runloop完成,並在下一個runloop的主線程中返回。我們保證,我們在''didSelect'中的方法已經完成,整個調用堆棧將完成,因爲直到發生這種情況,我們將無法回到主線程。而在那個時候,只有在這一點上,我們可以安全地開始介紹。 – matt