我试图用原型单元格制作UITableView。现在我遇到了问题。我使用了3种不同的原型单元格,其中2种是UITextField。
我是这样做的,我已经将UITableViewCell子类化了2次,用于我的UITextFields的Outlets,用于从Fields中获取信息。
我能以正确的方式做到吗?或者我需要重做我的方法吗?
这是我的代码[更新]:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString *CellIdentifier;
switch (indexPath.section) {
case 0:{
CellIdentifier = @"nameCell";
naamCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[naamCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
[cell setSelectionStyle: UITableViewCellSelectionStyleNone];
return cell;
break;
}
default:{
if(indexPath.row == [[_diceArray objectAtIndex:indexPath.section]count]){
CellIdentifier = @"addCell";
}else{
CellIdentifier = @"optionCell";
optionCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[optionCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
[[cell optionCell] setText:[NSString stringWithFormat:@"%@", [[_diceArray objectAtIndex:indexPath.section] objectAtIndex:indexPath.row]]] ;
[cell setSelectionStyle: UITableViewCellSelectionStyleNone];
return cell;
}
break;
}
}
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
[cell setSelectionStyle: UITableViewCellSelectionStyleNone];
return cell;
}
编辑:
所以这是一张正在发生的事情的图片。所以我有2个部分。在我的文本字段中添加了2个东西。从第2节中删除一个。来自UITextField的内容转到第3节,不会被删除:
编辑2: 我已经更新了代码。因此人们可以动态编辑UITextField。我想到了,我在我的数组中使用NSStrings测试它,然后在部分索引的数组中使用Cell.textfield.text = text。
现在我需要找到一种方法,用户可以在其上添加文本,当按下或更改文本字段时,文本会保存到我的数组中,然后执行[Table ReloadData];或者这不是正确的方法吗?
答案 0 :(得分:0)
我想我终于得到了它!
需要实现这个:
- (void) textFieldDidEndEditing:(UITextField *)textField {
UIView* v = textField;
do {
v = v.superview;
} while (![v isKindOfClass: [UITableViewCell class]]);
optionCell* cell = (optionCell*)v;
NSIndexPath* ip = [self._tabel indexPathForCell:cell];
if (![textField.text isEqual:[[_diceArray objectAtIndex:ip.section] objectAtIndex:ip.row]]) {
[[_diceArray objectAtIndex:ip.section] setObject:textField.text atIndex:ip.row];
}
}