2012-11-30 77 views
4

當我在場景中的UITableViewCell內的UIView內放置了UITapGestureRecognizer時,我從故事板獲得了上述錯誤。爲什麼我的手勢識別器不能用於原型對象?

任何想法,爲什麼我得到這個錯誤?

+0

也許因爲你不能!你想達到什麼? – Moxy

+0

我想做一個動作,當用戶點擊該視圖,以改變另一個視圖的顏色在單元格內部有動畫 – Tushar

回答

0

自己找到原因。故事板只允許當我們有一個UITableViewController或它的子類和tableview內容應該是'靜態單元'而不是默認的'動態原型'。在該配置中,我可以在單元格子視圖中添加手勢識別器。

但這是一個限制,不會在我的情況下工作,因爲我有一個非常自定義的視圖控制器子類而不是表視圖控制器子類。需要尋找其他方式似乎:(

8

我不知道爲什麼限制是存在的,但我知道你爲什麼得到它的錯誤。

當您在StoryBoard中設計UITableViewCell時,您只設計了一個原型對象。即該對象可能永遠不會實際存在。它只能在tableView:cellForRowAtIndexPath:

ACTUALLY中創建什麼可能是更好的方法是在代碼中配置單元格時創建gestureRecognizer。這樣你就不會有這個限制。

我也可能看看你是否真的需要它?如果只用一根手指點擊一下,那麼編碼touchesEnded或者只是使用UIButton代替它可能會更好。

+0

我總是可以在單元格子類中編寫一些代碼來實現它,這就是我無法使用storyboard的方法,目的是編寫更少的代碼並配置故事板本身的動作。我在那裏做了什麼錯,或者爲什麼它不被允許,儘管在storyboard中可以使用segue和手勢,但它可能是一個限制,但我不能確定,直到原因得到證實 – Tushar

+0

故事板允許使用手勢識別器...不是原型,你可以添加一個gestureRecognizer給UIView一個UILabel任何東西,這些不是原型,因爲它們是cr由故事板消除(實例化)。但是,如果它們位於UITableViewCell中,那麼它們將成爲原型,因爲它們可能根本不存在。它們是通過觸發您自己編寫的代碼創建的。 – Fogmeister

+0

我們可以在故事板中的單元格中添加手勢識別器,但需要在表格視圖中使用「靜態單元格」內容類型。詳情請看我的答案。 – Tushar