当前位置:首页 > 分类63 > 正文

IOS SegmentedControl利用addChildViewController切换UIViewController

摘要: IOSSegmentedControl利用addChildViewController切换UIViewControllerIOS...
IOS SegmentedControl利用addChildViewController切换UIViewController

IOS SegmentedControl利用addChildViewController切换UIViewController

先上效果图
Paste_Image.pngPaste_Image.png首先定义3个UIViewController
//全局变量    var chatVC:UIViewController!  //第一个    var friendVC:UIViewController!  //第二个    var currentVC:UIViewController! //公共变量
在viewDidLoad中初始化Controller
override func viewDidLoad() {        super.viewDidLoad()        //根据storyboard获取  建议 Identifier名称与文件名相同        chatVC = self.storyboard?.instantiateViewControllerWithIdentifier("KIMListViewController") as! KIMListViewController        self.addChildViewController(chatVC)        friendVC = self.storyboard?.instantiateViewControllerWithIdentifier("KFriendTableViewController") as! KFriendTableViewController        self.view.addSubview(chatVC.view)        currentVC = chatVC    }
然后拖拽一个SegmentedControl事件方法
@IBAction func ChangeVC(sender: AnyObject) {        let seg = sender as! UISegmentedControl        switch seg.selectedSegmentIndex{        case 0:            self.replaceController(oldController: currentVC, newController: chatVC)            break        case 1:            self.replaceController(oldController: currentVC, newController: friendVC)            break        default:break        }    }
这里需要一个公共方法来切换Controller
func replaceController(oldController oldController:UIViewController,newController:UIViewController)    {        //判断同意Controller不执行切换操作        if oldController == newController {return}        self.addChildViewController(newController)                /**        *   着重介绍一下它        *  transitionFromViewController:toViewController:duration:options:animations:completion:        *  fromViewController   当前显示在父视图控制器中的子视图控制器        *  toViewController  将要显示的姿势图控制器        *  duration    动画时间(这个属性,old friend 了 O(∩_∩)O)        *  options     动画效果(渐变,从下往上等等,具体查看API)        *  animations     转换过程中得动画        *  completion     转换完成        */        self.transitionFromViewController(oldController, toViewController: newController, duration: 0.2, options:.TransitionNone, animations: nil) { (finished:Bool) -> Void in            if finished{                newController.didMoveToParentViewController(self)                oldController.willMoveToParentViewController(nil)                oldController.removeFromParentViewController()                self.currentVC = newController            }else{                self.currentVC = oldController            }        }    }
运行 就可以看到效果啦,大家可以试试
转载修改:http://www.tuicool.com/articles/3ymMzub

iOS开发入门基础(六):分栏控制器 UITabBarController使用方法

一、UINavigationController 和 UITabBarController 的区别
和导航视图控制器一样,UITabBarController也是用来控制和管理视图控制器的,它们都继承了UIViewController类。UITabBarController如图所示。

从上图中可以看到,UINavigationController和UITabBarController都是通过自定义的形式来创建的,在一般的项目中,开发者也大都是运用自定义的方式来制定与自身应用主题相符合的控制器,这样使得应用更加美观。
UINavigationController的管理是通过栈的形式,会有一层层的层级关系,在出栈之后,当前的视图就会卸载;而UITabBarController是以数组的形式将分栏信息添加到手机屏幕上,而且视图之间的关系是平级的,并没有上下层的关系,而且在切换视图时,其他的视图并不会移除,这是它们二者最主要的区别。
二、UITabController 的结构

和UINavigationController相对应,通常情况下二者分别位于屏幕的上下方。在UINavigationController中提到过,UIKit框架中有一个UIBarItem类,可以将该类的实例添加到导航栏控制器和分栏控制器中,其实添加方法和导航栏控制器的方法类似。
三、基本使用方法
UITabBarController通常是作为整个应用的根视图控制器,所以可以在屏幕载入时就显示分栏控制器。
UITabBarController是通过数组来管理视图控制器的实例的,因此,先实例化几个视图,保存在数组中,然后设置UITabBarController 的视图控制器为该数组即可。
例如实现的下图的内容。

其中 Tab Bar上有4个视图,分别是主页面、音乐页面、新闻页面和我的页面。先创建这4个页面视图控制器,然后将四个页面控制器 view1,view2,view3,view4 赋值给数组 arryViewController,再设置 TabBar 的 ViewController,最后将Tab Bar 设置为 根视图控制器。

四、UITabBarController 的常用属性
在TabBarController里面,放置的是多个TabBarItem组成的数组,而每一个TabBarItem则又对应了一个ViewController。
1、TabBarItem的使用方法和一些重要的属性
主要包括3个属性:
1) title:设置每一个分栏的名称;
2) image:设置每一个分栏上的图片;
3) badgeValue:设置tab右上角的小标,显示数量等等,这是一个字符串,作为角标。
使用方式:
view1.tabBrarItem.title=@"最受欢迎";
view1.tabBarItem.image= [UIImage imageNamed:@"分享"];
";

主要方法就是实例化使用:
第一种方法,使用系统
2、tab Bar 的默认尺寸
在iPhone中,TabBarController的默认高度是49,宽度是320,而item的尺寸则是30*30。
3、设置Item 图标
1)系统自带的图标
每个视图控制器都有 tabBarItem,用来赋值 UITabBarItem 的实例。UITabBarItem 的实例可以带系统图标,总共有12个。例如:
view1.tabBarItem=[[UITabBarItem alloc]initWithTabBarSystemItem:UITabBarSystemItemMore tag:1];
其它 的TabBarSystemItem 有:
UITabBarSystemItemHistory:历史
UITabBarSystemItemSearch:搜索
UITabBarSystemItemMore:更多
UITabBarSystemItemRecents:最近
UITabBarSystemItemContacts:联系人
UITabBarSystemItemFeatured:特征
UITabBarSystemItemTopRated:最热
UITabBarSystemItemBookmarks:书签
UITabBarSystemItemDownloads:下载
UITabBarSystemItemFavorites:最爱
UITabBarSystemItemMostRecent:最新的
UITabBarSystemItemMostViewed:看的最多的
2)自定义的图标
view1.tabBarItem=[[UITabBarItem alloc]initWithTitle:@"最受欢迎" image:[UIImage imageNamed:@"分享"] tag:1];
4、Item数量
而在iPhone中,TabBar中最多能容纳的Item为5个,如果超过了5个,它会自己集成一个更多的选项供用户选择和编辑,就是显示更多的,点击 More ,显示一个 More 带有 Edit 的界面,再选择 Edit就显示" Drag the icons to organize tabs",就是自定义 Tab,拖住图标到 bar 上。

五、UITabBarController和UInavigationController的集成
通常在IOS应用中,UITabBarController和UInavigationController这2个视图控制器会同时配合着使用,单独使用的情况很少。
一般地都是将 UITabarController作为根视图,而UInavigationController控制子视图。
比如,来控制 vew1
//此处添加导航控制器,装入 view1
UINavigationController *navigationController1 = [[UINavigationController alloc]initWithRootViewController:view1];
//定义导航控制器的左按钮,是一个加号
UIBarButtonItem *addButton = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:nil];
[view1.navigationItem setLeftBarButtonItem:addButton animated:YES];
然后,将navigationController1代替 vew1,放入 arrayViewController 中去。
NSArray *arryViewController = @[ navigationController1,view2,view3,view4,view5,view6,view7];
显示效果如下。

完整代码如下:




发表评论