gpt4 book ai didi

iphone - Three20 数据源项和 TableViewController 之间的通信

转载 作者:行者123 更新时间:2023-11-29 05:01:10 25 4
gpt4 key购买 nike

我正在开发一个应用程序,我决定使用 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- 如何从 View Controller 访问数据? (即:读取开关的值)..现在我使用类似

bool ron = ((SwitchTableItemCell *)[self.tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:1 inSection:0]]).switchField.isOn;

这看起来很糟糕。

2-如何将 View Controller 设置为项目的委托(delegate)(即:我希望将 MyViewController 作为所有文本字段的委托(delegate))

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

谢谢!

最佳答案

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

您应该直接访问数据源:

self.dataSource.items

这是一个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)

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

 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

由于 self.dataSource.items 是一个 NSMutableArray,因此您可以通过 removeObjectAtIndex: 从中删除项目。并通过 addObject: 添加。

关于iphone - Three20 数据源项和 TableViewController 之间的通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6925643/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com