2013-10-20 58 views
7

我的UITableView需要2次點擊才能顯示所選單元的詳細信息頁面:一個用於選擇,另一個用於顯示詳細視圖。我希望能夠直接顯示單擊單元格的詳細視圖。Modal需要2次點擊而不是一次

我用一個模式賽格瑞我UITableViewManager.m這裏面方法:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([[segue identifier] isEqualToString:@"showDetail"]) { 
     NSIndexPath *indexPath = [playerList indexPathForSelectedRow]; 
     TCPlayerStat *object = _objects[indexPath.row]; 
     [[segue destinationViewController] setPlayerStat:object]; 
    } 
} 

我不能用推賽格瑞工作,因爲我沒有導航控制器(和真的不希望)。

我看過TableView Attribute Inspector,但沒有發現任何與此相關的東西。我選擇了選擇「單選」並選中「顯示選擇」。 我不知道這是否可能,如果是,在哪裏看..

感謝您的幫助。


編輯1:當我寫這兩種方法是這樣,它仍然無法正常工作(需要2次點擊),我有一個新的警告日誌:

「警告:試圖提出TCDetailViewController:0xa27b900 TCRootViewController:0xa24f050演示文稿正在進行中!「

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    [self performSegueWithIdentifier:@"showDetail" sender:self]; 
} 

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([[segue identifier] isEqualToString:@"showDetail"]) { 
     NSIndexPath *indexPath = [playerList indexPathForSelectedRow]; 
     TCPlayerStat *object = _objects[indexPath.row]; 
     TCDetailViewController *detailViewController = [segue destinationViewController]; 
     [detailViewController setPlayerStat:object]; 
    } 
} 

編輯2:我不知道爲什麼,但有時它完美的作品,並不需要對錶視圖中的第二次點擊。找不到了:/


解決方案如下

+0

嘗試,做索引路徑選擇行 - 然後從那裏繼續。 – DogCoffee

回答

13

我喜歡這個問題!

我改變了故事板上我不應該擁有的參數。我希望選擇單元格不要在我點擊時顯示背景突出顯示的顏色,但Segue似乎是基於它正常工作的。

如何解決: 在故事板,在Navigator中選擇你的表格視圖單元格並在「選擇」不選擇了「無」選項(屬性檢查器)。 「藍色」,「灰色」或「默認」似乎很好。

0

使用

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

,而不是

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 

然後,你可以寫任何代碼,它的工作原理上第一次點擊。

+0

這個問題似乎在別的地方。也許在故事板中。找不到... 我的segue已經由故事板執行過一次,但它需要2次點擊而不是一次(在我的表格視圖中)75%的時間。 有時它工作得很好:/ – Tulleb

11

我已經將選擇屬性設置爲「默認」,並且仍然遇到雙擊問題。然而,這個建議確實提出了一個相關的解決方案。在didSelectRowAtIndexPath中,調用:

self.tableView.deselectRowAtIndexPath(indexPath, animated: false) 

(我很明顯使用了Swift。)

+0

這似乎是一個奇怪的錯誤,隻影響現在模態 - >交叉溶解和水平翻轉。你的解決方案完美地工作謝謝 – Tom

+0

這改變了'''self.tableView.deselectRow(at:indexPath,animated:false)''' – reggie

+0

是的!這是解決方案。您必須取消選擇您選擇的行。故事板中的選擇選項不會影響這一點。謝謝。 – pulp

0

僅供參考。直到現在,對於Xcode 8.2.1和Swift 3.x,我的定製UICollectionViewCell子類也存在這個問題(但我認爲不需要子類來重現此問題,我沒有時間來測試這種情況)。

我總結了這個問題:在先前選擇的單元上點擊會消耗點擊事件以導致取消選擇,而不是預期地觸發選擇段落。

因此,解決方案是,或者不使用選擇段落,而是使用以編程方式觸發段落,或者在觸發選擇段落時取消選擇該單元格本身。