Three20 TTSectionedDataSource行高

时间:2010-06-01 17:13:55

标签: iphone three20

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

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

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

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

如果我想从数据源更改文本字段中的内容,我可以利用该方法:

- (void)tableView:(UITableView*)tableView cell:(UITableViewCell*)cell willAppearAtIndexPath:(NSIndexPath*)indexPath

我可以使用 indexPath.row 检查行,然后将单元格键入相应的自定义单元格类。从那里我可以访问我的单元类中的任何公共方法。所以我创建了一个返回对文本字段的引用。所以我可以说:

[[(MyCustomTextFieldCell *)cell theTextField] setText:@"hello world"];

下一步是将它分配给本地ivar,然后我假设我应该可以随时访问它。

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

如果我的方法过于复杂,请告诉我。也许我会创建一个样本并发布给每个人撕开并告诉我,我是一个白痴,并且有更好的方法。

感谢, 豪伊