Three20 数据源项与 TTTableViewController 之间的通信

发布于 2024-11-27 22:53:19 字数 1010 浏览 0 评论 0原文

我正在开发一个应用程序,我决定使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

花桑 2024-12-04 22:53:19

1- 如何从视图控制器访问数据? (即:读取开关的值)..现在我使用类似的东西

你应该直接访问数据源:

self.dataSource.items

这是一个NSMutableArray

2-如何将视图控制器设置为项目的委托(即:我希望将 MyViewController 作为所有文本字段的委托)

这取决于您想要做什么。我在您的代码中看到的唯一项目是 UISwitch,它没有 delegate;但如果该项目有一个,我会这样做:

 MYItem* switchy = [[[UISwitch alloc] init] autorelease];
 switchy.delegate = self;

3- 添加/删除字段的最佳方法是什么。现在我只是从头开始重新分配数据源,但看起来有点难看

因为 self.dataSource.items 是一个 NSMutableArray,你可以通过 removeObjectAtIndex: 并通过 添加对象:

1- How can I access data from the viewcontroller? (ie: Read the value of the switch).. Right now i use something like

You should access the data source directly:

self.dataSource.items

this is an NSMutableArray.

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)

It depends on what you want to do. The only item I see in your code is a UISwitch, which has no delegate; but if the item had one, I would do:

 MYItem* switchy = [[[UISwitch alloc] init] autorelease];
 switchy.delegate = self;

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

Since self.dataSource.items is an NSMutableArray, you can remove items from it thorugh removeObjectAtIndex: and add through addObject:.

心碎无痕… 2024-12-04 22:53:19

有关 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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文