UITableView单元格内的UITextField

4
我一直在阅读很多东西,试图找出我做错了什么。我一直在尝试在UITableView单元格中添加4个UITextFields。我通过IB创建了UITextFields和UITableView。我将文本字段添加到NSMutableArray中,然后在cellForRowAtIndexPath中将这些文本字段对象添加到数组中的4个单元格中。然而,这就是我的问题所在。文本字段没有在表格中对齐(图片:http://cl.ly/5a02f3acdd44d8a08125)。以下是一些代码:
viewDidLoad: textBoxList = [[NSMutableArray alloc] init];
[textBoxList addObject: txtName];
[textBoxList addObject: txtIP];
[textBoxList addObject: txtPort];
[textBoxList addObject: txtPassword];

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

cellForRowAtIndexPath是一个UITableViewDataSource协议中的方法,用于返回指定位置的单元格。在实现该方法时,我们需要根据indexPath参数来确定要返回哪个单元格,并将其作为返回值返回。

static NSString *CellIdentifier = @"Cell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    cell = [[[UITableViewCell alloc] init] autorelease];
}

// Set up the cell...
[cell.contentView addSubview: [textBoxList objectAtIndex:[indexPath row]]];


return cell;

这是因为我在IB中设置了这些UITextFields而不是动态创建它们吗?与我的委托有关吗?我迷失了……

1个回答

3

您需要将标签的框架设置为相对于单元格。


像这样吗?txtName = [[UITextField alloc] initWithFrame:CGRectMake(0,0,100,30)]; txtIP = [[UITextField alloc] initWithFrame:CGRectMake(0,0,100,30)]; txtPassword = [[UITextField alloc] initWithFrame:CGRectMake(0,0,100,30)]; txtPort = [[UITextField alloc] initWithFrame:CGRectMake(0,0,100,30)]; - bmilleker
好的,如果你已经在加载的nib文件中有标签,那么你不需要创建所有新的标签。除非你要改变这个策略? - Firoze Lafeer
我仍在使用那个策略。不确定如何在它们上面设置框架。 - bmilleker
好的,我不确定将它们放入nib文件中(而不是只将字符串放入.strings文件中)会带来多少好处。但是,撇开这个问题不谈,“frame”是UIView的一个属性。因此,txtName.frame = CGRectMake(...)。 - Firoze Lafeer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接