2013-10-25 48 views
0

我有一個自定義子類UITableViewCell。我自定義設置UILabel的一些屬性在細胞內包含的標籤的外觀代理,具體如下:自定義UITableViewCell標籤文本不會取消選擇

[UILabel appearanceWhenContainedIn:[UITableViewCell class], nil].textColor = [UIColor blackColor]; 
[UILabel appearanceWhenContainedIn:[UITableViewCell class], nil].highlightedTextColor = [UIColor redColor]; 

當我選擇UI中的細胞,該標籤的顏色改變,因爲預期和代碼執行推到下一個視圖控制器。然而,當我跳出這個新的視圖控制器,並回到與自定義UITableViewCell S上的屏幕,高亮顯示的文本顏色仍然即使我取消細胞中的代碼如下:

- (void)viewDidAppear:(BOOL)animated 
{ 
    if ([self.tableView indexPathForSelectedRow]) { 
     [self.tableView deselectRowAtIndexPath:[self.tableView indexPathForSelectedRow] animated:YES]; 
    } 
    [super viewDidAppear:animated]; 
} 

這是一個錯誤在iOS 7中,或者我做錯了什麼?

回答

0

我不會說它是一個錯誤,但有一種方法來解決它。

-(void)viewWillDisappear:(BOOL)animated{ 

    [super viewWillDisappear:YES]; 

    if ([self.tableView indexPathForSelectedRow]) { 
    [self.tableView deselectRowAtIndexPath:[self.tableView indexPathForSelectedRow] animated:YES]; 
    } 

} 
+0

不幸的是,也沒有爲我工作。 –

0

傑米,我面對完全相同的情況。我有一個UIView作爲contentViewUITableViewCellUITableView是在UIPopoverController。如果我在解散它之後重新打開popover,選擇亮點不會清楚。

我確實嘗試了這裏提到的兩種解決方案,正如你所說的都行不通。在調試時,我意識到UITableView不知何故失去了選擇,並返回indexPathForSelectedRow

不幸的是我沒有找到一個很好的解決方案。我會稱這是一個iOS 7的bug,因爲 UITableView的行爲不像以前那樣和預期的一樣。

我採用的解決方案是改變我的UIView的背景顏色,而不是使用UITableView的選擇方法,並將其更改回viewWillDisappear中的默認顏色。

我大家都在閱讀更好的解決方案。

相關問題