在单元格中设置开关On / Off(2.2.1到3.0 bug)

时间:2009-08-02 19:52:28

标签: iphone

我正在努力将我的应用程序升级到3.0,并且开发了一个在2.2.1中不存在的新错误(实际上这是我通过升级唯一的问题...除了setText:是折旧警告)

我有一个带有单元格的tableView,它们上面有开关控件。使用viewWillAppear,我将根据从plist文件中读取的值设置这些开关。

问题:现在我已经转换为3.0,我必须使用tabBar在此tableView和任何其他视图之间来回两次才能设置切换值。使用调试器的第一次和第二次我已经验证它两次都通过“refreshSwitches”函数....即它在第一次如何通过代码/函数...第二,或任何时候。

正确地从plist中读取值,但是第一次出现视图时所有开关都关闭了?任何想法。


这是在2.2.1中有效的代码,但在3.0中没有。注意:我投入了一个AlertView进行调试(以及使用常规调试工具)......

我第一次进入AlertView时的视图:

1不在

第二个(以及任何剩余时间)我进入AlertView上的视图:

1 IS on

// I've Tried viewDid and Will Appear, both have the same result.
    - (void)viewDidAppear:(BOOL)animated
{
    [self refreshView];
}

- (void)refreshView{
    UITableViewCell *cell;
    UISwitch *switchView;
    NSIndexPath *indexPath;

    indexPath = [NSIndexPath indexPathForRow:0 inSection:1];
    cell = [thisTableView cellForRowAtIndexPath:indexPath];
    switchView = (UISwitch *)[cell viewWithTag:kSwitchTag];
    switchView.on = ([SharedClass sharedSharedClass].tempVar == 1) ? YES : NO;  

    NSString *baseString = @"%u %@.";
    NSString *onString = (switchView.on) ? @"IS on" : @"IS NOT on";
    NSString *messageString = [[NSString alloc] initWithFormat:baseString, [SharedClass sharedSharedClass].tempVar, onString];

    // TEMP DEBUG ALERTVIEW

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"INDICATOR Row Selected"                                   message:messageString                                                  delegate:nil
cancelButtonTitle:@"Thanks"                                 otherButtonTitles:nil];

[alert show];
[alert release];
[messageString release];

[self.thisTableView reloadData];

}

要回答关于单元格的问题...我没有“传递”一个单元格到方法,我正在设置indexPath并创建指向单元格的指针,这样我就可以访问单元格上的开关控件了。所以不,我不认为它会在任何地方设置为零。我认为单元格和tableView存在,因为我没有尝试制作指向单元格的指针,直到viewWill或viewDid出现

1 个答案:

答案 0 :(得分:0)

你确定传入此方法的单元格是否为零?在您将其设置为on ...

之后,这将解释为什么该值已关闭