Iphone 如何在UITableViewCells中使用UITextFields?

Iphone 如何在UITableViewCells中使用UITextFields?,iphone,objective-c,cocoa-touch,uitableview,uitextfield,Iphone,Objective C,Cocoa Touch,Uitableview,Uitextfield,我的UITableView中有10个UITableView单元格。每个单元格都有一个UITextField。它们加载得很好,但我需要一种方法将每个单元格的文本设置为其关联的字符串 我是否可以使用UITextField的代理来执行此操作,以及如何确定哪个textfield属于NSString,等等 编辑: 这是我的表视图的图片。我希望它从服务器将文本加载到每个单元格的textfield,然后用户可以编辑它。或者,如果服务器上没有数据,textfield将为空,用户可以添加数据并将其同步回来 我为每

我的
UITableView
中有10个
UITableView单元格。每个单元格都有一个
UITextField
。它们加载得很好,但我需要一种方法将每个单元格的文本设置为其关联的字符串

我是否可以使用
UITextField
的代理来执行此操作,以及如何确定哪个textfield属于
NSString
,等等

编辑:

这是我的
表视图的图片。我希望它从服务器将文本加载到每个单元格的
textfield
,然后用户可以编辑它。或者,如果服务器上没有数据,
textfield
将为空,用户可以添加数据并将其同步回来

我为每个单元格创建了一个
NSString
,例如
temperatureString
pulseString


创建每个文本字段时,必须存储对它们的引用,因此在中:

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }
方法,您将添加以下行:

[myTextFieldArray addObject: cell.textField];
假设textField是自定义选项卡视图单元格的属性

您还可以在if(cell==nil)方法之后的文本字段中设置文本

委托方法只允许您知道何时键入文本等

编辑:

考虑到你的补充,我同意希德和CStreel的观点。为每个值创建标记:

#define kTemperatureTag 0
#define kPulseTag 1
// etc.
作为CStreel的替代方案,我将分配/检索与indexPath行匹配的信息,而不必担心分配标记,因为如果将标记从零开始,它们将是相同的

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
  // setup / retrieve cell

  NSInteger index = [indexPath row];
  switch(index)
  {
  case kTemperatureTag:
    cell.textField.text = [self.childAppointmentDictionary objectForKey:@"temperature"];
            break;
  // case ...
  }
  // ..
}
以及:


编辑:关于新信息,这是我的新解决方案

因此,从外观上看,您正在将
UITextField
插入每个单元格,而不是设置每个单元格的标记为每个
UITextField

首先定义你的标签

#define DESCRIPTIVE_TAG_VALUE_1 10
#define DESCRIPTIVE_TAG_VALUE_2 11
#define DESCRIPTIVE_TAG_VALUE_3 12
...
在您的
UITextField
委托中使用这些选项,以确定哪个
UITextField
属于哪个
NSString
,即您是否正在与每个更新同步。然后获取对
UITableView
的引用,并检索一个单元格的每个子视图的每个文本值,该单元格的标记等于您的一个定义(同样在switch语句中)

再一次,在使用iOS使用标签时,他们是你的朋友

或 此外,您还说您持有对每个
NSString
的引用,您可以只持有对每个
UITextField
的引用,而不是在同步时,您只需从每个
UITextField
引用中重新设置


但苹果的最佳实践是在处理多视图时使用独特的标签。这完全取决于您

UITextfield是UIView的一个子类,它具有“tag”属性。您可以将单元格的索引路径指定为文本字段的标签作为标识。

< P>根据您对JavaJavy的评论(其中包含您应该考虑添加到原来的问题的额外信息),您可以做如下的事情:

UITableViewCell *cell = nil;
NSString *key = nil;

switch (indexPath.row)
{
    case 0:
        cell = self.temperatureCell;
        key = @"temperature";
        break;
    case 1:
        // Do other cases similarly ...
}

NSString *text = [self.childAppointmentDictionary objectForKey:key];
cell.textField.text = text;

您应该在
tableView:cellforrowatinexpath:

听起来你有一个特定的顺序,你希望你的项目出现在其中,这将是一个很好的时间使用NSArray,而不是NSDictionary

您可以在init或initwithNibName中创建保留数组属性:

self.myListArray = [NSArray arrayWithObjects:@"fever", @"cough", @"runny nose", nil];
然后,假设您只有1个部分,您将执行
cell.textField.text=[self.myListArray objectAtIndex:indexPath.row]


您使用NSDictionary而不是NSArray有什么原因吗?

另外,我忘了提到,将相关字符串链接到项目中的标记,我没有给出代码,因为我不知道您的项目是如何结构的。相同的东西将应用于为每个单元格分配一个唯一的标记,并在“cellForRowAtIndexPath”中使用switch语句(如didSelectRowAtIndexPath)填充下一个字段。我将编辑我的帖子,让大家了解我的意思。我可以为每个单元格声明一个
UITextField
属性,然后在设置该单元格其余属性的开关中进行设置吗?我已经有了
cell.textField.text=[self.childAppointmentDictionary objectForKey:@“temperature”]它应该设置我的
UITextField
的文本。我使用一个开关来设置每个单元格的文本,所以在每种情况下,我都应该执行
[myTextFieldArray addObject:cell.textField],然后我可以使用其indexPath检索每个文本字段?@Faisal将此信息添加到原始问题中会很有帮助。您的问题不太清楚,因此您得到的回答有点笼统。您需要对文本字段做什么?为什么您需要设置单元格的文本而不是让用户编辑它?您何时需要设置文本,是否需要在某个时刻获取用户条目?所有这些问题都会对如何最好地解决问题产生影响。我更新了问题的更多细节。谁说我在使用
NSDictionary
?你说了。在您对@Jarvy的评论中。cell.textField.text=[self.childAppointmentDictionary objectForKey:@“temperature”];虽然你很粗鲁,但我不知道你为什么要我帮你做任何事。
self.myListArray = [NSArray arrayWithObjects:@"fever", @"cough", @"runny nose", nil];