У меня есть приложение, которое начинается со списка задач и сверлит вниз через один или два вида списка до окончательного UIViewController
. Из-за требований проекта эти контроллеры представлений должны создаваться и программно программироваться, не через segues в Interface Builder. Я сделал это с помощью отдельных списков и обычных контроллеров, но в одном случае я был в тупике.Как программно создавать и заполнять вложенные UITableViewControllers?
В настоящее время у меня есть несколько UITableViewControllers
в Interface Builder, которые указывают на другие UITableViewControllers
, в основном сводный список. Я не знаю, как создать элемент списка в моем UITableViewController
, который создает еще один UITableViewController
, заполненный элементами списка, которые я отправляю, а затем переходит к нему.
Мне нужно, чтобы UITableViewController
был общим, поэтому я могу создать несколько списков сверления, используя тот же код UITableViewController
.
Имеет ли это смысл? Я чувствую, что это должно быть простой вещью, но мой мозг просто не смог установить связь.
EDIT: Позвольте мне попытаться лучше проиллюстрировать мою проблему. Мой UITableViewController
содержит элементы списка, которые ему переданы, и массив объектов, связанных с этими элементами. UITableViewController
использует эти объекты для создания окончательного экрана UIViewController
в большинстве случаев.
TableVC.h
@interface TableVC : UITableViewController <UITableViewDataSource, UITableViewDelegate>
//Menu items
@property NSMutableArray *itemList;
//Objects to pass to the detail ViewController
@property NSMutableArray *itemObjectList;
- (void)initWithList:(NSMutableArray *)items :(NSMutableArray *)objects :(NSString *)title;
@end
TableVC.m
NSMutableArray *items = [NSMutableArray arrayWithObjects:
NSLocalizedString(@"List Item 1",nil),
NSLocalizedString(@"List Item 2",nil), nil];
NSMutableArray *objects = [[NSMutableArray alloc]init];
MenuListObject *obj1 = [[MenuListObject alloc]init];
obj1.name =NSLocalizedString(@"Name",nil);
obj1.department=NSLocalizedString(@"Department",nil);
[email protected]"Address";
[email protected]"XXXYY.jpg";
obj1.menuIndex=0;
[email protected]"F";
...
[objects addObject:obj1];
[objects addObject:obj2];
TableVC *vc = [[TableVC alloc]init];
[vc initWithList:items :objects :NSLocalizedString(@"My Title",nil)];
[self.navigationController pushViewController:vc animated:YES];
Однако в некоторых случаях элементы списка не идут к UIViewController.
Вместо этого они ведут в другой список, который затем заканчивается на UIViewController.
я знаю как создать элементы списка, но не элемент списка, который ведет к другому UITableViewcontroller.
Если есть лучший способ справиться со всем этим, я открыт для предложений.
«Из-за характера приложения эти контроллеры представлений должны быть созданы и перемещаться программно, а не через segues в Interface Builder». Я ничего не вижу в вашем описании, которое невозможно сделать в раскадровке. Вы можете сделать это с помощью segues. – ullstrm