2015-06-16 2 views
1

У меня есть два ViewController.Как подобрать ViewController в SubView другого ViewController

Один ViewControllers содержит UITableView. И еще один содержит UIButton.

Я создал SubView Programmatically.Now я хочу SubView в ViewController, который содержит UITableView в другом, когда я Пресс UIButton.

Я искал по всей сети, но не могу найти стабильного решения.

В настоящее время я пытаюсь это:

bodyView =[[UIView alloc]initWithFrame:CGRectMake(0,120,containerView.frame.size.width,120)]; 

bodyView.backgroundColor = [UIColor redColor]; 

CustomTableVC *tableVC = [[CustomTableVC alloc]init]; 

[tableVC willMoveToParentViewController:self]; 
[bodyView addSubview:tableVC.view]; 
[self addChildViewController:tableVC]; 
[tableVC didMoveToParentViewController:self]; 

[containerView addSubview:bodyView]; 
+1

Является ли это tableviewController? получить таблицу из tableviewcontroller с помощью 'tableViewController.tableView', добавить ее как subview в ваш viewcontroller, например:' [viewController.view addSubview: tableViewController.tableView] '; – 0yeoj

+0

no @Oyeoj это view Controller – Sid

+0

Затем получить представление viewcontroller с помощью 'toAddViewController.view', например' parentViewController.view', как 'parentViewController.view addSubview: toAddViewController.view' – 0yeoj

ответ

1

Вы не можете.

Вы можете использовать только view свойство вашего UIViewController назначить в UIView, связанный в вашем втором UIViewController, который не рекомендуется, потому что UIViewController согласно MVC шаблон держит много вещей контроллер, который включает в себя заполнение зрения и разрешение входов/контакт, который является накладными расходами в вашем (с использованием нескольких экземпляров viewcontrollers без необходимости).

Вам нужно использовать один UIViewController. Добавьте UITableView только в него, а UIButton только в нем. Вы используете только один контроллер и несколько видов.

Другой подход, если вы не хотите изменять свой код, также может использовать ContainerView. Но в этом случае вам нужно создать отдельные ViewControllers для UIButton и UITableView. И если вы хотите получать данные между ViewControllers, это будет огромная боль, а также плохой дизайн программного обеспечения с таким большим количеством соединений и меньшим количеством инкапсуляции.

+0

так как я могу подсмотреть представление таблицы в другом vc – Sid

+0

Я отредактировал свой ответ. – khunshan

0

Я пробовал этот, и он работает для меня.

@IBAction func moveToOther() { 


var otherController = OtherViewController() 

     var bodyView = UIView(frame: CGRectMake(0,120, self.view.frame.size.width, 120)) 
     bodyView.backgroundColor = UIColor.redColor(); 
     bodyView.layer.borderWidth = 1.0 

     let tblCntrl = UITableViewController() 
     bodyView.addSubview(tblCntrl.tableView) 
     bodyView.clipsToBounds = true 
     otherController.addChildViewController(tblCntrl) 
     tblCntrl.didMoveToParentViewController(otherController) 

     otherController.view.addSubview(bodyView) 

     self.navigationController?.pushViewController(otherController, animated: true) 

} 
0

Вы должны использовать только один контроллер представления, содержащий как вид таблицы & UIButton. По умолчанию скрыть представление таблицы. Спрячьте кнопку и покажите вид таблицы при нажатии кнопки.

Смежные вопросы