Iphone 三个20 TTSECTIONEDDATASURCE行高

Iphone 三个20 TTSECTIONEDDATASURCE行高,iphone,three20,Iphone,Three20,我正在使用Three20创建一个包含多个文本字段的表,用于用户注册。我用Three20找到了两种可能的方法。第一种方法使用TTSectionedDataSource的tableDidLoadModel方法手动添加UI组件,第二种方法添加包含预格式化UI组件的自定义项。第二个选项似乎更复杂,我很难访问各个字段。因此,如果一个字段是用户名的文本字段,我需要访问该字段以提交用户名,而且似乎没有一个简单的答案。第一个选项给了我很大的灵活性,但我不知道如何设置单个行的高度。一行可能在文本字段上方有一个标签

我正在使用Three20创建一个包含多个文本字段的表,用于用户注册。我用Three20找到了两种可能的方法。第一种方法使用TTSectionedDataSource的tableDidLoadModel方法手动添加UI组件,第二种方法添加包含预格式化UI组件的自定义项。第二个选项似乎更复杂,我很难访问各个字段。因此,如果一个字段是用户名的文本字段,我需要访问该字段以提交用户名,而且似乎没有一个简单的答案。第一个选项给了我很大的灵活性,但我不知道如何设置单个行的高度。一行可能在文本字段上方有一个标签,另一行可能有一个图像,等等。是否有一种方法可以在TTSectionedDataSource中使用,允许我设置每行的高度?到目前为止,我正在使用方法一并创建UIView来保存标签字段和文本字段。在将uiview添加到items数组之前,我尝试过更改它的框架,但没有任何影响


有什么想法吗?

我想我可能已经想到了。不确定这是否是正确的解决方案,但似乎有效

首先,在自定义项类中,我以委托的形式传递数据源。既然委托是项的一部分,我就可以将其作为委托传递到我的文本字段。只要我在数据源类中包含UITextFieldDelegate,它就会作为对我的textfield的委托进行响应。这就是从文本字段中获取内容

如果我想从数据源更改textfield中的内容,我可以利用以下方法:

- (void)tableView:(UITableView*)tableView cell:(UITableViewCell*)cell willAppearAtIndexPath:(NSIndexPath*)indexPath
我可以使用indexPath.row检查该行,然后将该单元格键入相应的自定义单元格类。从那里我可以访问cell类中的任何公共方法。所以我创建了一个返回对textfield的引用的函数。所以我可以说:

[[(MyCustomTextFieldCell *)cell theTextField] setText:@"hello world"];
下一步是将它分配给本地ivar,然后我假设我应该能够随时访问它

我希望能够修改textfield的内容的主要原因是,在某些情况下,通过单击textfield,将出现一个选择器,并将选择器的结果格式化并插入到textfield中

如果我的方法太复杂,请告诉我。也许我会创建一个样本,然后把它发布给每个人,让他们撕开,告诉我我是个白痴,还有更好的方法

谢谢,
豪伊

我想我可能已经弄明白了。不确定这是否是正确的解决方案,但似乎有效

首先,在自定义项类中,我以委托的形式传递数据源。既然委托是项的一部分,我就可以将其作为委托传递到我的文本字段。只要我在数据源类中包含UITextFieldDelegate,它就会作为对我的textfield的委托进行响应。这就是从文本字段中获取内容

如果我想从数据源更改textfield中的内容,我可以利用以下方法:

- (void)tableView:(UITableView*)tableView cell:(UITableViewCell*)cell willAppearAtIndexPath:(NSIndexPath*)indexPath
我可以使用indexPath.row检查该行,然后将该单元格键入相应的自定义单元格类。从那里我可以访问cell类中的任何公共方法。所以我创建了一个返回对textfield的引用的函数。所以我可以说:

[[(MyCustomTextFieldCell *)cell theTextField] setText:@"hello world"];
下一步是将它分配给本地ivar,然后我假设我应该能够随时访问它

我希望能够修改textfield的内容的主要原因是,在某些情况下,通过单击textfield,将出现一个选择器,并将选择器的结果格式化并插入到textfield中

如果我的方法太复杂,请告诉我。也许我会创建一个样本,然后把它发布给每个人,让他们撕开,告诉我我是个白痴,还有更好的方法

谢谢, 豪伊