我有一个包含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行,我就可以获得所有值......
答案 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
}