iOS通过多种方式创建控制器

本文教大家通过storyboard创建控制器,希望对大家的学习有所帮助。

1.怎么自己通过storyboard创建控制器,之前都是系统加载storyboard,帮我们创建好控制器。

通过UIStoryboard这个对象,就能加载storyboard文件 注意:必须要有storyboard,创建UIStoryboard对象才有意义,alloc init创建UIStoryboard对象没有意义

1.1> instantiateInitialViewController:默认加载箭头指向的控制器

1.2> instantiateViewControllerWithIdentifier:根据标识在storyboard查找 控制器,并且创建。(标识不能乱传,会报错,必须storyboard有这个标识才行。)

1.3> 现在创建的控制器都不能处理事件,如果需要处理事件,需要自定义控制器。

现在创建的控制器为什么不能处理事件?

原因:当通过storyboardID找到storyboard中的控制器的时候,就会创建storyboard中描述的控制器对象,创建对象首先得知道类名, 会根据storyboard中的Custom Class确定类名,然后创建对象,默认都是系统自带的控制器对象,系统自带的是不能处理事件的。他不能写监听方法。

所以,要想处理控制器事件,必须自定义控制器。

2.模仿系统怎么通过main.storyboard加载程序的。(带storyboard的项目)

2.1> 带有storyboard的程序,默认程序一启动,就会加载storyboard,自动 创建好窗口和根控制器。

2.2> 系统怎么判断需不需加载storyboard?主要看有没有设置主界面,如果 设置了Main,就会去加载Main.storyboard.

2.3> 在新增一个storyboard文件,怎么加载新增的storyboard,修改主界面。

2.4> 模仿程序一启动就加载Main.storyboard文件,创建窗口,创建箭头指向的窗口根控制器,并且显示窗口。(先清空主界面设置,需要删除缓存)

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  // Override point for customization after application launch.

  //创建窗口(窗口不能被释放,否则不能显示)
  self.window = [[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];

  //加载storyboard,nil标识[NSBundle mainBundle]
  UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];

  //加载箭头指向的控制器
  UIViewController *vc = [storyboard instantiateInitialViewController];

  //让控制器成为窗口的根控制器
  self.window.rootViewController = vc;

  //显示窗口
  [self.window makeKeyAndVisible];

  return YES;
}

3. 通过xib创建控制器的view(空项目) (首先得要有xib)

3.1 xib注意点:
1> xib里面必须有一个view描述控制器的view,因为控制器的view属性必须有值。
2> xib需要指定描述哪一个控制器,描述UIView不需要,因为xib里 面可以描述很多UIView,不能固定死,但是控制器就不一样了,一个只用来描述一个控制器。
3> xib里面可能有很多view,需要拖线指明哪个是控制器的view

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  // Override point for customization after application launch.

  // 创建窗口
  self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; 

  // 通过xib创建控制器
  ViewController *vc = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
  self.window.rootViewController = vc;

  [self.window makeKeyAndVisible];

  return YES;
}

3.2 xib和storyboard的区别storyboard已经指定了控制器的view,不需要我们管,xib需要我们手动管理。

以上就是本文的全部内容,希望能够帮助大家轻松创建iOS控制器有所帮助。

(0)

相关推荐

  • 实例讲解iOS中的UIPageViewController翻页视图控制器

    一.引言 UIPageViewController是iOS中少见的动画视图控制器之一,通过它既可以创建类似UIScrollView与UIPageControl结合的滚屏视图,也可以创建类似图书效果的炫酷翻页视图. UIPageViewController在iOS 5 SDK中首次引入,它使得开发者可以使用这个ViewController创建分页视图.在iOS 6中,这个类有了更新,支持滚动过渡效果.使用Page View,用户可以方便的通过手势在多个页面之间导航.UIPageViewContro

  • iOS应用开发中UITabBarController标签栏控制器使用进阶

    做了这么长时间的ios开发了,最基本的UITabBarController和UINavigationController都用了好长时间了,总是改现成的代码,或者各种自定义控件的修改,用的都有些混乱了,呵呵.还是自己做个demo再复习一下吧,记录下来以备后续翻查. 一.UITabBarController和UINavigationController的联合使用 这种方法最常见,好像一般有tabbar都会有naviBar.一般使用, 1. 在appDelegate里面创建UITabBarContro

  • iOS开发中ViewController的页面跳转和弹出模态

    ViewController 页面跳转 从一个Controller跳转到另一个Controller时,一般有以下2种: 1.利用UINavigationController,调用pushViewController,进行跳转:这种采用压栈和出栈的方式,进行Controller的管理.调用popViewControllerAnimated方法可以返回. 复制代码 代码如下: PickImageViewController *ickImageViewController = [[PickImageV

  • 详解iOS开发中使用storyboard创建导航控制器的方法

    关于StoryBoard iOS5之后Apple提供了一种全新的方式来制作UI,那就是StoryBoard.简单理解来说,可以把StoryBoard看做是一组viewController对应的xib,以及它们之间的转换方式的集合.在StoryBoard中不仅可以看到每个ViewController的布局样式,也可以明确地知道各个ViewController之间的转换关系.相对于单个的xib,其代码需求更少,也由于集合了各个xib,使得对于界面的理解和修改的速度也得到了更大提升.减少代码量就是减少

  • 详解iOS的UI开发中控制器的创建方法

    控制器的创建 说明:控制器有三种创建方式,下面一一进行说明. 一.第一种创建方式(使用代码直接创建) 1.创建一个空的IOS项目. 2.为项目添加一个控制器类. 3.直接在代理方法中创建一个控制器. 复制代码 代码如下: #import "YYAppDelegate.h" #import "YYViewController.h" @implementation YYAppDelegate - (BOOL)application:(UIApplication *)ap

  • iOS实现两个控制器之间数据的双向传递

    本文为大家分享了iOS控制器之间数据的双向传递,供大家参考,具体内容如下 首先,有两个控制器,分别为控制器A.控制器B. A->B:数据由控制器A传向控制器B,这叫做数据的顺传:数据由控制器B传向控制器A,这叫做逆传. 顺传:一般通过创建目标控制器对象,将数据赋值给对象的成员来完成: 逆传:一般使用代理来实现,其中控制器A是控制器B的代理(控制器A监听控制器B,控制器B通知控制器A). 下面是博主写的简单实现了两个控制间实现数据的双向传递的app的demo: 1.这是界面设计: FirstVie

  • iOS如何获取当前View所在控制器的方法

    前言 不知道大家有没有遇到过在做轮播图的时候,有点轮播图展示的是广告,有的是活动,等等还有其他的,当前点击某个轮播的时候要跳转到不同的控制器,点击事件是在控制器写的,为了避免控制器代码过多,显示的臃肿.我创建了一个UIWindow的分类,暂且叫Model (GetCurrentVC) 实现方法 谷歌还有很多方法,下面这个方法亲测有效,有需要的可以参考借鉴. 一: @interfaceUIWindow (GetCurrentVC) - (UIViewController*)getCurrentVC

  • iOS开发中导航控制器的基本使用教程

    多控制器和导航控制器简单介绍 一.多控制器 一个iOS的app很少只由一个控制器组成,除非这个app极其简单.当app中有多个控制器的时候,我们就需要对这些控制器进行管理 有多个view时,可以用一个大的view去管理1个或者多个小view,控制器也是如此,用1个控制器去管理其他多个控制器 比如,用一个控制器A去管理3个控制器B.C.D.控制器A被称为控制器B.C.D的"父控制器":控制器B.C.D的被称为控制器A的"子控制器" 为了便于管理控制器,iOS提供了2个

  • iOS开发中WebView的基本使用方法简介

    1.使用UIWebView加载网页 运行XCode 4.3,新建一个Single View Application,命名为WebViewDemo. 2.加载WebView 在ViewController.h添加WebView成员变量和在ViewController.m添加实现 复制代码 代码如下: #import <UIKit/UIKit.h> @interface ViewController : UIViewController {     UIWebView *webView; } @e

  • iOS通过多种方式创建控制器

    本文教大家通过storyboard创建控制器,希望对大家的学习有所帮助. 1.怎么自己通过storyboard创建控制器,之前都是系统加载storyboard,帮我们创建好控制器. 通过UIStoryboard这个对象,就能加载storyboard文件 注意:必须要有storyboard,创建UIStoryboard对象才有意义,alloc init创建UIStoryboard对象没有意义 1.1> instantiateInitialViewController:默认加载箭头指向的控制器 1.

  • iOS模仿微信长按识别二维码的多种方式

    参考:https://github.com/nglszs/BCQRcode 方式一: #import <UIKit/UIKit.h> @interface ViewController : UIViewController @end ************** #import "ViewController.h" @interface ViewController () @end @implementation ViewController - (void)viewDid

  • C# 创建单例的多种方式

    关于为什么需要创建单例?这里不过多介绍,具体百度知. 关于C#  创建单例步骤或条件吧 1.声明静态变量: 2.私有构造函数(无法实例化) 3.静态创建实例的方法:至于我这里的Singleton是sealed ,只是为了防止被继承,其实有私有构造函数足够了,这里只是为了代码可读性. 第一种常见的方式创建单例: /// <summary> /// 不安全的单例 /// </summary> public sealed class Singleton { private static

  • 在android开发中进行数据存储与访问的多种方式介绍

    数据存储与访问 很多时候我们的软件需要对处理后的数据进行存储或再次访问.Android为数据存储提供了多种方式,分别有如下几种: 文件 SharedPreferences SQLite数据库 内容提供者(Content provider) 网络 使用文件进行数据存储 首先给大家介绍使用文件如何对数据进行存储,Activity提供了openFileOutput()方法可以用于把数据输出到文件中,具体的实现过程与在J2SE环境中保存数据到文件中是一样的. 复制代码 代码如下: public clas

  • JS中多种方式创建对象详解

    1.内置对象创建 var girl=new Object(); girl.name='hxl'; console.log(typeof girl); 2.工厂模式,寄生构造函数模式 function Person(name){ var p=new Object();//内部进行实例化 p.name=name; p.say=function(){ console.log('my name is '+ p.name); } return p;//注:一定要返回 } var girl=Person('

  • Laravel5.1数据库连接、创建数据库、创建model及创建控制器的方法

    本文实例讲述了Laravel5.1数据库连接.创建数据库.创建model及创建控制器的方法.分享给大家供大家参考,具体如下: 前言:laravel创建数据库,实际可以手动创建,如古老的phpmyadmin 等均可以. 一.数据库连接: 在根目录(laravel5.1下面有个.env文件,如果没有则会有个.env.example然后将此文件修改成.env文件即可) 打开文件: 找到: DB_HOST=127.0.0.1 //连接地址不使用localhost DB_DATABASE=homestea

  • Spring实现IoC的多种方式小结

    控制反转IoC(Inversion of Control),是一种设计思想,DI(依赖注入)是实现IoC的一种方法,也有人认为DI只是IoC的另一种说法.没有IoC的程序中我们使用面向对象编程对象的创建与对象间的依赖关系完全硬编码在程序中,对象的创建由程序自己控制,控制反转后将对象的创建转移给第三方,个人认为所谓控制反转就是:获得依赖对象的方式反转了. IoC是Spring框架的核心内容,使用多种方式完美的实现了IoC,可以使用XML配置,也可以使用注解,新版本的Spring也可以零配置实现Io

  • 详解idea打包jar的多种方式

    这里总结出用IDEA打包jar包的多种方式,以后的项目打包Jar包可以参考如下形式: 用IDEA自带的打包形式 用Maven插件maven-shade-plugin打包 用Maven插件maven-assembly-plugin打包 用IDEA自带的打包方式: 打开IDEA的file -> Project Structure,进入项目配置页面.如下图: 点击Artifacts,进入Artifacts配置页面,点击 + ,选择如下图的选项. 进入Create JAR from Modules页面,

  • 详解Python连接MySQL数据库的多种方式

    上篇文章分享了windows下载mysql5.7压缩包配置安装mysql 后续可以选择 ①在本地创建一个数据库,使用navicat工具导出远程测试服务器的数据库至本地,用于学习操作,且不影响测试服务器的数据 ②连接测试服务器的数据库账号和密码,在测试服务器上操作,内部测试服务器的数据库账号和密码在分配时会给不同账号做权限限制,如不同账号允许登录的方式.开放的数据库范围.账号可读写操作的权限都会不一样,若出现一直使用代码登录不上远程数据库服务器,应检查下账号是否具有权限,可询问负责管理测试服务器数

随机推荐