带有UISwitch的UITableViewCell会导致.tag = 1变为空

时间:2011-03-10 21:45:19

标签: iphone xcode ios4

我有一个包含6行的自定义tableview。其中5行包含UITextFields,其中1行包含UISwitch。

我添加了这样的文本框:

switch (indexPath.row) {
            case 0:
                txtLabel.text = NSLocalizedString(@"Name:", @"");
                txtField.tag=1;
                [txtField becomeFirstResponder];
                [cell.contentView addSubview:txtField];
                [txtField release];
                break;

中的

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

添加开关如:

case 3:
                txtLabel.text = NSLocalizedString(@"Male:", @"");
                UISwitch *mySwitch = [[[UISwitch alloc] initWithFrame:CGRectZero] autorelease];
                cell.accessoryView = mySwitch;
                [mySwitch setTag:6];
                break;

我在另一种方法中读取了这些值,如:

UITextField *daName = (UITextField *)[self.view viewWithTag:1];

但由于某些原因,只要我添加UISwitch,daName值就会变为null。其他值读得很好(因此标签2没问题,标签3没问题等等)

我在这里缺少什么?因为当我删除UISwitch然后我从标签1 ...

返回一个值

提前致谢!

修改

我只是看到,只要我的tableview中有6行,标签为id 1的元素就会变为空...只要我有5行,我就可以获得所有值......

3 个答案:

答案 0 :(得分:0)

我确实读过stackoverflow上的某个地方,当你设置标签时你不应该使用0或1,我不记得在哪里,但我认为它提到了一些关于默认的东西?可能值得搜索...

答案 1 :(得分:0)

好的我已经添加了一个mutablearray并将文本字段添加到数组中。这样我就不必再使用标签,而且工作正常......

答案 2 :(得分:-1)

 UISwitch *daName = (UISwitch *)[self.view viewWithTag:tag];

 if (daName.on){
  // handle the switch of particular of tag 


}