2015-12-27 39 views
0

我有一個UIViewController,它包含一個UITableView,我想在點擊表格單元格時忽略UIViewController。所以,我實現了方法:嘗試解除UIViewController時出現奇怪的問題

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 

在此方法中我叫:

[self dismissViewControllerAnimated:YES completion:nil]; 

出於某種原因,當我點擊細胞,應用程序死機,我需要點擊一次,以更UIViewController解僱。我甚至在那裏放置了一個斷點,以檢查它是在第一次還是第二次敲擊時到達它,並且在第一次敲擊它到達斷點時,然後單擊繼續執行,然後我需要再次敲擊。

有人在iOS上遇到此問題嗎?

回答

1

首先,您好像使用didDeselectRowAtIndexPath而不是didSelectRowAtIndexPath。請確保您使用didSelect ...,而不是didDeselect ....

其次,它會因爲方法tableView:didSelectRowAtIndexPath:不在主線程中調用而凍結。你必須使用GCD在主隊列中執行代碼:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    dispatch_async(dispatch_get_main_queue(), ^{ 
     [self dismissViewControllerAnimated:YES completion:nil]; 
    }); 
} 
+0

感謝的人,做過的魅力! :) –

1
// PLEASE TRY THIS. 

[self.navigationController.popoverPresentationController]; 
相關問題