2014-02-26 74 views
0

嗯,我已經通過網絡搜索這個問題的一個簡單的實現,但我聽到的所有內容都與我在開始時所認爲的不一致。如何啓用didSelectRow選擇單元格內包含的元素?

我想知道是否有人可以提供更好更容易的實現來解決這個問題。

那麼看下面的圖片,(請忽略照片的粗陋)

enter image description here

我有多個單元格的表視圖。 並且根據數據,每個單元格內將會有不同的元素。

如果我觸摸單元格2中的滾動視圖,如圖所示。 tableView「didSelectRowAtIndexPath」的委託方法將調用NOT,這對我來說是一個問題。

因此,我的第一個想法是在Scrollviews委託方法內觸發[tableView selectRowAtIndexPath],或者將另一個tapGesture附加到這些子視圖並從那裏觸發它。但它聽起來並不像一個直觀的實現,並且很難維護。

任何人有任何想法如何能以更簡單的方式解決這個問題?

感謝

+1

是你說你的問題是,單元格2中的SelectSelectRowAtIndexPath在被觸摸時沒有被調用,但你希望它被調用? – sangony

+1

您是否需要用戶與單元格2內的ScrollView進行交互? –

+0

@HossamGhareeb,是的,我需要用戶能夠與滾動視​​圖交互,同時使didSelectRow被調用。 – TypingPanda

回答

0

有各種各樣的,你可能會想在這裏實現的目標,所以我不會猜測你還沒有告訴我們的終極目標,但一般:

如果您希望兩個不同的UIElements執行相同的代碼塊,那麼您將該代碼封裝在一個獨立的方法中,並從兩個地方調用該方法。

在您的UIScrollView中,作爲UITableViewCell示例的子視圖,您可以在-(void)tableView didSelectRowAtIndexPath:(NSIndexPath*)indexPath之內調用它,並且還可以從附加到scrollView的手勢識別器中調用它。

我會推測你遇到麻煩的部分是知道哪個scrollView被觸摸,或scrollView是在哪一行。一種可能的方法是發送UIScrollView或UITableViewCell作爲獨立方法的參數你創建。 -(void)doSomethingSpecialWith:(UITableViewCell*)cell-(void)doSomethingSpecialWith:(UIScrollView)view

發佈一些更多的代碼,或隨意進一步解釋你的計劃,但我有一種強烈的感覺,你最好的辦法,是子類的UITableViewCell,添加的UIScrollView的自定義單元格的屬性,並連接手勢識別器以調用子類UITableViewCell的方法。

+0

你一定正確。我的最終目標是在調用「didSelectRowAtIndexPath」時,我將更改單元格的背景顏色,使其看起來像突出顯示。我認爲你的建議可能是我的問題的一個很好的解決方案,但我想稍等一些其他選項。謝謝 – TypingPanda

0

我認爲更好的辦法來解決這個問題: 科瑞自定義的方法, - (空)tableviewSeletedIndexPath:(NSIndexPath *)indexPath

可以調用的TableView s delegate -(void)tableView didSelectRowAtIndexPath:(NSIndexPath*)indexPath , and call this method in your scroll S分析此方法。

0

使滾動視圖的標籤等於當前單元格行:

scrollView.tag = indexPath.row; 

讓你的ViewController是的UIScrollView的委託,並在didScroll獲得指標,並呼籲didSelect:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView 
{ 
    NSIndexPath *index = [NSIndexPath indexPathForRow:scrollView.tag inSection:0]; 

    [self tableView:self.tableView didSelectRowAtIndexPath:index]; 
} 
相關問題