UISegmentedControl 在视图控制器之间切换
Posted
技术标签:
【中文标题】UISegmentedControl 在视图控制器之间切换【英文标题】:UISegmentControl switching between viewcontrollers 【发布时间】:2013-02-28 02:41:49 【问题描述】:我有一个导航控制器,它的导航栏上有一个 UISegmentControl,我已经将 UIViewController 设置为导航控制器的 rootViewController。现在,当用户选择 UISegmentControl 时,我需要在另外两个 UITableViewController 之间切换。
我设置了
[rootViewController.view addSubview:firstTableView.view]
当我处理段控制值更改事件时,我像这样设置另一个表视图控制器
[rootViewController.view removeFromSubview];
[rootViewcontroller.view addSubview:secondTableView.view];
[segmentControl setEnabled:YES forSegmentAtIndex:segmentControl.selectedSegmentIndex];
但是当段控制切换到第二个表格视图时,什么都没有!!!只是空白。
谁能告诉我怎么做?
【问题讨论】:
什么是removeFromSubview
?默认没有这样的方法。
抱歉打错了,是 removeFromSuperview
【参考方案1】:
要将视图控制器添加为子视图,您可以这样做:
[rootViewController.view addSubview:firstTableView.view];
[rootViewController addChildViewController:firstTableView];
以及删除它:
[firstTableView.view removeFromSuperview];
[firstTableView removeFromParentViewController];
[rootViewcontroller.view addSubview:secondTableView.view];//now you can add second tableviewcontoller
[rootViewController addChildViewController:secondTableView];
【讨论】:
【参考方案2】:-viewDidLoad()
[ self.view addSubview: firstTableView] ;
firstTableView.hidden = yes;
[ self.view addSubview: secondTableView] ;
secondTableView.hidden = yes;
-(IBAction) segmentAction:(id)sender
UISegmentedControl* control = sender ;
if( [control selectedSegmentIndex] == 0 )
firstTableView.hidden = no;
secondTableView.hidden = yes;
if( [control selectedSegmentIndex] == 1 )
firstTableView.hidden = yes;
secondTableView.hidden = no;
【讨论】:
以上是关于UISegmentedControl 在视图控制器之间切换的主要内容,如果未能解决你的问题,请参考以下文章
在iOS 5中使用UISegmentedControl切换视图控制器
一个视图一次最多只能与一个视图控制器关联(UISegmentedControl)
UISegmentedControl 设置 UITableView、页面控制、scrollview、图像视图