Связь Three20 между элементами источника данных и TTTableViewController - PullRequest
0 голосов
/ 03 августа 2011

Я разрабатываю приложение, и я решил использовать три + TTTableViewControllers для страницы, подобной настройкам.

Итак, у меня есть мой ViewController:

@interface MyViewController : TTTableViewController 

, который инициализирует мой источник данных:

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

Мой источник данных затем инициализирует различные виды элементов управления (некоторые три20 стандартных, некоторые пользовательские классы), например

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 ]

1 голос
/ 03 августа 2011

1 - Как я могу получить доступ к данным из viewcontroller?(т.е.: прочитайте значение переключателя) .. Прямо сейчас я использую что-то вроде

Вы должны получить доступ к источнику данных напрямую:

self.dataSource.items

это NSMutableArray.

2- Как я могу установить viewcontroller в качестве делегата для элементов (то есть: я хочу, чтобы MyViewController был делегатом для всех текстовых полей)

Itзависит от того, что вы хотите сделать.Единственный элемент, который я вижу в вашем коде - это UISwitch, у которого нет delegate;но если бы у предмета был один, я бы сделал:

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

3 - Какой лучший способ добавить / удалить поле.Прямо сейчас я просто переназначаю источник данных с нуля, но опять-таки выглядит немного некрасиво

Поскольку self.dataSource.items является NSMutableArray, вы можете удалить из него элементы через removeObjectAtIndex:добавить через addObject: .

0 голосов
/ 03 августа 2011

Для базовой настройки контроллера TTableview из трех 20

используйте эту ссылку http://www.raywenderlich.com/656/introduction-to-three20

...