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];