我有两个ViewController。
一个ViewControllers包含一个UITableView。另一个包含UIButton。
我已经创建了一个SubView Programmatically.Now I want to SubView ViewController,当我按下UIButton时,它包含了other中的UITableView。
我在网上找遍了,但找不到任何稳定的解决方案。
目前我正在尝试这样做:
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];发布于 2015-06-16 18:49:43
你不能。
你只能使用你的UIViewController的view属性来赋值到你的第二个UIViewController中关联的UIView中,这是不推荐的,因为根据MVC模式,UIViewController包含了批量控制器的东西,包括填充视图和解析输入/触摸,这在你的情况下(不需要使用多个视图控制器)是一个开销。
您需要使用一个UIViewController。仅在其中添加UITableView,并在其中仅添加UIButton。您只需使用一个控制器和多个视图。
另一种方法,如果您不想更改代码,也可以使用ContainerView。但在这种情况下,您需要为UIButton和UITableView创建单独的ViewControllers。如果你想在ViewControllers之间获取数据,这将是一个巨大的痛苦,也是一个糟糕的软件设计,因为它有如此多的耦合和更少的封装。
发布于 2015-06-16 19:34:34
我试过这个,它对我很有效。
@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)
}发布于 2015-06-16 20:25:24
您应该只使用一个同时包含表视图和UIButton的视图控制器。默认情况下,隐藏表视图。只需隐藏该按钮,并在单击该按钮时显示表格视图。
https://stackoverflow.com/questions/30865399
复制相似问题