2011-11-23 36 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; 
    } 
}