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

时间:2011-08-03 11:19:34

标签: iphone ios three20

我正在开发一个应用程序,我决定将三个20 + TTTableViewControllers用于类似设置的页面。

所以我有我的ViewController:

@interface MyViewController : TTTableViewController 

这使我的数据源正常化:

-(void) createModel {
    self.dataSource = [[[MyDataSource alloc] init] autorelease];
}

我的数据源然后初始化不同类型的控件(大约三个标准,一些自定义类),例如

UISwitch* switchy = [[[UISwitch alloc] init] autorelease];
TTTableControlItem* switchItem = [TTTableControlItem itemWithCaption:@"UISwitch" control:switchy];
self.dataSource = [TTListDataSource dataSourceWithObjects:switchItem,...,...,nil]

现在有一些事情我不清楚..

1-如何从viewcontroller访问数据? (即:读取开关的值)..现在我使用类似

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

那个看起来很可怕。

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

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

谢谢!

2 个答案:

答案 0 :(得分:1)

  

1-如何从viewcontroller访问数据? (即:读取开关的值)..现在我使用类似

的东西

您应该直接访问数据源:

self.dataSource.items

这是NSMutableArray

  

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

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

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

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

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

答案 1 :(得分:0)

对于三个20的TTableviewcontroller的基本设置,

使用此链接http://www.raywenderlich.com/656/introduction-to-three20