Three20 数据源项与 TTTableViewController 之间的通信
我正在开发一个应用程序,我决定使用 Three20 + TTTableViewControllers 作为类似设置的页面。
所以我有我的 ViewController:
@interface MyViewController : TTTableViewController
初始化我的数据源:
-(void) createModel {
self.dataSource = [[[MyDataSource alloc] init] autorelease];
}
然后我的数据源初始化不同类型的控件(一些 320 个标准,一些自定义类),例如
UISwitch* switchy = [[[UISwitch alloc] init] autorelease];
TTTableControlItem* switchItem = [TTTableControlItem itemWithCaption:@"UISwitch" control:switchy];
self.dataSource = [TTListDataSource dataSourceWithObjects:switchItem,...,...,nil]
现在有一些事情我不清楚..
1-我怎样才能从视图控制器访问数据? (即:读取开关的值)..现在我使用类似的东西,
bool ron = ((SwitchTableItemCell *)[self.tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:1 inSection:0]]).switchField.isOn;
只是看起来很糟糕。
2-如何将视图控制器设置为项目的委托(即:我希望将 MyViewController 作为所有文本字段的委托)
3-添加/删除字段的最佳方法是什么。现在我只是从头开始重新分配数据源,但看起来有点难看
谢谢!
I'm developing an application, and I decided to use three20 + TTTableViewControllers for settings-like page.
So I have my ViewController:
@interface MyViewController : TTTableViewController
That initalizes my datasource:
-(void) createModel {
self.dataSource = [[[MyDataSource alloc] init] autorelease];
}
My datasource then initalizes different kind of controls (some three20 standard, some custom classes), for example
UISwitch* switchy = [[[UISwitch alloc] init] autorelease];
TTTableControlItem* switchItem = [TTTableControlItem itemWithCaption:@"UISwitch" control:switchy];
self.dataSource = [TTListDataSource dataSourceWithObjects:switchItem,...,...,nil]
Now there are a few things that are not clear to me..
1- How can I access data from the viewcontroller? (ie: Read the value of the switch).. Right now i use something like
bool ron = ((SwitchTableItemCell *)[self.tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:1 inSection:0]]).switchField.isOn;
that onestly looks terrible.
2- How can I set the viewcontroller as a delegate for the items (ie: I want have MyViewController as a delegate for all the text fields)
3- What's the best way to add/remove a field. Right now I just reassign the datasource from scratch but again, looks a bit ugly
Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
你应该直接访问数据源:
这是一个
NSMutableArray
。这取决于您想要做什么。我在您的代码中看到的唯一项目是
UISwitch
,它没有delegate
;但如果该项目有一个,我会这样做:因为 self.dataSource.items 是一个 NSMutableArray,你可以通过
removeObjectAtIndex:
并通过 添加对象:。You should access the data source directly:
this is an
NSMutableArray
.It depends on what you want to do. The only item I see in your code is a
UISwitch
, which has nodelegate
; but if the item had one, I would do:Since
self.dataSource.items
is an NSMutableArray, you can remove items from it thorughremoveObjectAtIndex:
and add through addObject:.有关 3 个 20 的 TTableviewcontroller 的基本设置,
请使用此链接 http://www.raywenderlich.com /656/Three20简介
For basic setup of TTableviewcontroller of three 20,
use this link http://www.raywenderlich.com/656/introduction-to-three20