gpt4 book ai didi

iphone - 如何在 iPhone 中的分组 TableView 单元格中创建文本字段

转载 作者:行者123 更新时间:2023-12-03 20:17:41 25 4
gpt4 key购买 nike

我想在组 TableView 单元格中创建一个文本字段。如果我在单元格中创建一个文本字段,则这些文本字段将重叠在所有分组的 TableView 单元格中。我不知道这是怎么发生的。所以我想在分组 TableView 单元格(不是所有单元格)中创建一个文本字段。我怎样才能实现这个目标?有可用的示例代码吗?

这是我的示例代码,

if(indexPath.section == 0)
{
if(indexPath.row == 0)
{
UITextField * lastname = [[UITextField alloc] initWithFrame:CGRectMake(120, 5, 150, 35)];

lastname.tag = titleTag2;

[cell.contentView addSubview:lastname];

lastname.delegate = self;

lastname.returnKeyType = UIReturnKeyDefault;
}
}

最佳答案

以防万一有人遇到这个问题,这就是将 UITextField 添加到组表中的方法。

在 UITableViewController (我假设是表的委托(delegate)和数据源)中实现以下功能:

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

static NSString *CellIdentifier = @"CellIdentifier";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];

if (indexPath.section == 0) {

// Add a UITextField
UITextField *textField = [[UITextField alloc] init];
// Set a unique tag on each text field
textField.tag = titleTag2 + indexPath.row;
// Add general UITextAttributes if necessary
textField.enablesReturnKeyAutomatically = YES;
textField.autocorrectionType = UITextAutocorrectionTypeNo;
textField.autocapitalizationType = UITextAutocapitalizationTypeNone;
[cell.contentView addSubview:textField];
[textField release];
}
}

// Configure the cell...
[self configureCell:cell atIndexPath:indexPath];

return cell;
}


- (void)configureCell:(UITableViewCell *)theCell atIndexPath:(NSIndexPath *)indexPath {

if (indexPath.section == 0) {

// Get the text field using the tag
UITextField *textField = (UITextField *)[theCell.contentView viewWithTag:titleTag2+indexPath.row];
// Position the text field within the cell bounds
CGRect cellBounds = theCell.bounds;
CGFloat textFieldBorder = 10.f;
// Don't align the field exactly in the vertical middle, as the text
// is not actually in the middle of the field.
CGRect aRect = CGRectMake(textFieldBorder, 9.f, CGRectGetWidth(cellBounds)-(2*textFieldBorder), 31.f );

textField.frame = aRect;

// Configure UITextAttributes for each field
if(indexPath.row == 0) {
textField.placeholder = @"Name";
textField.returnKeyType = UIReturnKeyNext;
textField.autocapitalizationType = UITextAutocapitalizationTypeWords;
} else if(indexPath.row == 1) {
textField.placeholder = @"Email Address";
textField.returnKeyType = UIReturnKeyNext;
textField.keyboardType = UIKeyboardTypeEmailAddress;
} else {
textField.placeholder = @"Password";
textField.returnKeyType = UIReturnKeyDone;
textField.secureTextEntry = YES;
}
}
}

显然,您仍然需要实现 UITextFieldDelegate 方法来实际处理文本输入并在字段之间移动第一响应者。

更新:自从发布此文以来,我意识到您可以使用 UIControl contentVerticalAlignment 属性,并将其设置为 UIControlContentVerticalAlignmentCenter,在这种情况下,您只需将框架设置为单元格内容 View 的边界即可。

关于iphone - 如何在 iPhone 中的分组 TableView 单元格中创建文本字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3062113/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com