2014-02-07 104 views
0

有沒有在代碼中添加一些隱藏信息到UITableViewCell的方法?將隱藏信息添加到UITableViewCell

使用案例:

  • 在活動供稿,(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath被調用,每個單元都有一個活動。每個都有自己獨特的「activityId」。
  • 每個細胞都有了其中的一些按鈕(具有唯一的標籤),並按下時,給定的活動是「喜歡」
  • 每個按鈕都有一個IBOutlet,那麼它會調用模型然後處理像

我對IBOutlet中的代碼是:

- (IBAction)buttonUp:(UIButton *)sender { 

UIButton *btn = (UIButton *) sender; 
UITableViewCell *cell = (UITableViewCell *) [[btn superview] superview]; 

UIView *cellView = [cell.contentView viewWithTag: ..myUniqueButtonTag.. ]; 

NSLog(@"activityId is: %@", ...); 
} 
+0

使用cell.accessibilityValue併爲其分配數據..當點擊找到該單元格及其accessibilityabilityValue –

回答

6

聽起來像是你需要創建一個自定義的UITableViewCell類,如果你想在你的細胞中做更復雜的事情那麼標準都允許 - https://developer.apple.com/library/ios/documentation/userexperience/conceptual/tableview_iphone/TableViewCells/TableViewCells.html

+0

我真正需要的唯一的事情是activityId ...我真的需要一個全新的子類嗎? –

+0

嗯,也許你可以使用標籤屬性,如果你的ID是一個NSNumber。但是,如果你真的需要做的就是添加一個屬性,那麼UITableViewCell的子類很容易。如果你想擴展它的功能,將來可能會有一個子類。 – ansible

+0

,我可能會想要(實際上,將需要)。所以,這似乎是最好的行動方針。關閉你的頭頂,知道設置它時應該避免的任何大的陷阱?編輯:將接受這個答案作爲正確的時間限制 –

0

您不應該這樣做superview shuffle[[btn superview] superview],因爲它遲早會崩潰。

我同意@ansible您應該創建一個自定義單元格並使用委託關係,以便按鈕告訴單元格它被點擊並且單元格告訴委託。這是最好和最合適的解決方案。

對於作弊者而言,請考慮在按鈕上使用objc_setAssociatedObject將id信息與它關聯,以便您可以在操作方法中訪問它。

+0

我已經提前做了一個自定義單元格,但是當按下按鈕時,我依靠'[[[btn superview] superview] superview]'來獲得定製單元的類。關於你的第一句話,有沒有更好的辦法? –

+0

使單元成爲按鈕方法的目標並讓它轉發該操作。 – Wain