簡體   English   中英

輕按“附件”按鈕時更改contentView

[英]Changing the contentView when an Accessory button is tapped

我將UITableViewCell細分為顯示一個UIImage和兩個UILabel子視圖。 在表視圖的視圖控制器中,在方法cellForRowAtIndexPath:我已經通過setAccessoryType:UITableViewCellAccessoryDetailDisclosureButton啟用了附件視圖。

單元格正確顯示。

當我點擊附件公開按鈕時,我想用兩個不同的標簽子視圖替換兩個標簽子視圖。 我的方法如下:

  1. 在子類UITableViewCell layoutSubviews內部,為“ alternate”標簽創建CGRect ,將它們與兩個“ original”標簽放置在相同的位置,並通過setAlpha:將它們隱藏setAlpha:
  2. 輕觸“披露”按鈕后,可以通過調整兩個字母的Alpha來換掉兩個標簽的集合。

問題是我無法弄清楚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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM