2011-11-23 89 views
6

我放置UISwitch ES在UITableViewCell S和我嘗試最初禁用它:新IOS5 UISwitch不看殘疾人在一個UITableViewCell

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    ... 
    self.switch = [[UISwitch alloc] init]; 
    self.switch.enabled = NO; 
    cell.accessoryView = self.switch; 
    ... 
} 

在IOS版本之前的IOS5中,(OLD-看)開關被禁用,並且當視圖出現時也看起來被禁用(變暗)。

在IOS5中,(新的)開關被關閉,我不能翻轉它,但是在這個階段它看起來不會被禁用。它與啓用的開關具有相同的亮度。

如果我稍後在代碼中啓用並重新禁用它(不在cellForRowAtIndexPath:回調中),它看起來禁用(灰顯)。

我做錯了什麼或者這是IOS5中的錯誤?

+0

請勿使用'switch'作爲開關的名稱,它是Objective-C中的保留字。 –

回答

3

UISwitch的指定初始值爲-initWithFrame: - 你試過用它嗎?

+0

是的,我最初做過,但沒有解決問題。我將其改爲簡單的init,因爲cell.accessoryView無論如何設置了框架,我希望使用簡單的init可以提供一個解決方案。 –

+0

即使它在這裏沒有幫助,我會使用指定的初始化程序。 (其中忽略了框架的一部分......) –

+2

繞過指定的初始化程序可能會導致初始化對象不正確,這會使您陷入困境。 – Costique

2

我遇到了與iOS 5相同的問題。您可以使用-initWithFrame創建開關,然後您可以將開關添加爲單元格contentView和子視圖(不是accesoryview,不要忘記計算contentView的子視圖,否則您可以用-addSubview:方法添加一個新的uiswitch)。

0

我有同樣的問題,我解決了所有我的UISwitches在一個數組中。

然後在我的viewDidAppear,我遍歷數組禁用它們。

- (void)viewDidAppear:(BOOL)animated { 
    for (UISwitch *switchView in switchMArray) { 
     switchView.enabled = NO; 
    } 
}