![](/img/trans.png)
[英]Why is my custom accessory button not changing image when tapped (ios)?
[英]Changing the contentView when an Accessory button is tapped
我將UITableViewCell
細分為顯示一個UIImage
和兩個UILabel
子視圖。 在表視圖的視圖控制器中,在方法cellForRowAtIndexPath:
我已經通過setAccessoryType:UITableViewCellAccessoryDetailDisclosureButton
啟用了附件視圖。
單元格正確顯示。
當我點擊附件公開按鈕時,我想用兩個不同的標簽子視圖替換兩個標簽子視圖。 我的方法如下:
UITableViewCell
layoutSubviews
內部,為“ alternate”標簽創建CGRect
,將它們與兩個“ original”標簽放置在相同的位置,並通過setAlpha:
將它們隱藏setAlpha:
問題是我無法弄清楚layoutSubviews
哪些邏輯,我無法使用這些邏輯來了解是否已輕擊附件按鈕。 我在視圖控制器中看到,在點擊該按鈕時會調用accessoryButtonTappedForRowWithIndexPath:
控制器accessoryButtonTappedForRowWithIndexPath:
按鈕TappedForRowWithIndexPath :,似乎從那里我將調用layoutSubviews
但無法弄清楚如何使用該事實來完成我想做的事情。
我要解決所有這些錯誤嗎? 我應該只創建UITableViewCell
另一個子類,而不是使用alpha隱藏/顯示CGRect
?
當我點擊附件公開按鈕時,我想用兩個不同的UILabel子視圖替換兩個UILabel子視圖。
我將執行以下操作。 在您的UITableViewCell
子類中創建一個公共方法,如下所示:
- (void)changeContentForCell;
在這種方法中,您可以根據需要設置contentView
。
然后在您的視圖控制器中實現
- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath
{
CustomCell* cCell = (CustomCell*)[tableView cellForRowAtIndexPath:indexPath];
[cCell changeContentForCell];
}
這是更改內容的簡單示例。 我認為您不必使用layoutSubviews
添加視圖。
將此邏輯保留在changeContentForCell
,然后調用setNeedsLayout
更改布局。 也許您可以使用一個變量來跟蹤單元格的狀態:正常狀態或修改狀態。
希望能幫助到你。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.