iphone: у каждой строки в главном табличном представлении есть свое собственное табличное представление - PullRequest
0 голосов
/ 08 ноября 2011

основное представление таблицы будет иметь строки, которые добавляются / создаются пользователем, и эта строка будет открывать свое собственное представление таблицы, которое также имеет свою собственную строку добавления / создания.Мой главный вопрос - как сделать так, чтобы каждая добавленная строка в главном табличном представлении открывала свое собственное табличное представление (как пустое, пока не добавлено пользователем).

Эта ссылка, которую я видел, является ближайшей Как я могуперейти к другому контроллеру представления, когда пользователь нажимает на строку? , но не совсем то, что я ищу.Большинство примеров / репетиторов обычно заполнены или уже имеют массив в виде таблицы.Я хотел, чтобы мины не содержали в нем ничего, но добавлялись только пользователями и основным табличным представлением, каждая строка открывала свое собственное табличное представление.

У меня уже есть два табличных представления, одно из которых основное, а другое подчинено каждой строке.Мне удалось вставить строку в основное табличное представление, но он открывает то же самое табличное представление, что и другие строки в основном табличном представлении, и хотел бы знать, как убедиться, что каждая строка в основном табличном представлении открывает свой собственный пустой табличный вид.

1 Ответ

1 голос
/ 08 ноября 2011

Обычно ваш контроллер представления контролирует tableView.Я предполагаю, что вы пытаетесь вписать туда несколько табличных представлений и логику для каждого.Вместо этого просто создайте контроллеры для каждой таблицы.

Сначала создайте контроллер основного представления, используя шаблон UIViewController (не используйте TableViewController).Используйте XIB и добавьте туда элемент TableView, ИЛИ создайте экземпляр UITableView, используя код.

Теперь создайте класс, соответствующий делегату и источнику данных, протоколам.Это не должно быть контроллером представления.Пример:

// MiniTVC.h

@interface MiniTVC : NSObject <UITableViewDelegate, UITableViewDataSource>
@property (nonatomic, retain) IBOutlet UITableView *tableView;
@property (nonatomic, retain) NSArray *array;
-(id) initWithTableView:(UITableView*)tableView array:(NSArray*)array;
@end

и реализовать методы делегата и источника данных как обычно.Вам необходимо как минимум следующее:

  • tableView:heightForRowAtIndexPath:
  • numberOfSectionsInTableView:
  • tableView:numberOfRowsInSection:
  • tableView:cellForRowAtIndexPath:

Затем, возвращаясь к контроллеру основного представления, вы создаете (или подключаете из конструктора интерфейса с помощью IBOutlets) tableView и задаете его делегат и источник данных для вашего класса MiniTVC, например:

// sample table created by code 
CGRect frame = CGRectMake(50,50,100,100);
UITableView *tableView = [[UITableView alloc] initWithFrame:frame]
[self.view addSubView:tableView];

// set the datasource/delegate
MiniTVC *miniTVC = [[MiniTVC alloc] initWithTableView:self.tableView array:someArray];
tableView.dataSource = self.miniTVC;
tableView.delegate = self.miniTVC;

Youможет повторить этот процесс, создав еще один UITableView + MiniTVC из пользовательского UITableViewCell.Или вы можете заставить UITableViewCell соответствовать делегату / источнику данных таблицы и реализовать там методы.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...