精华内容
下载资源
问答
  • ViewController

    2015-08-30 14:20:51
    ViewController

    ViewController

    ViewController是iOS应用程序中重要的部分,是应用程序数据和视图之间的重要桥梁,ViewController管理应用中的众多视图。iOS的SDK中提供很多原生ViewController,以支持标准的用户界面,例如表视图控制器(UITableViewController)、导航控制器(UINavigationController)、标签栏控制器(UITabbarController)和iPad专有的UISplitViewController等。

    一、按结构可以对iOS的所有ViewController分成两类:

    1、主要用于展示内容的ViewController,这种ViewController主要用于为用户展示内容,并与用户交互,如UITableViewController,UIViewController。

    2、用于控制和显示其他ViewController的ViewController。这种ViewController一般都是一个ViewController的容器。如UINavigationController,UITabbarController。它们都有一个属性:viewControllers。其中UINavigationController表示一种Stack式结构,push一个ViewController或pop一次,因此后一个ViewController一般会依赖前一个ViewController。而UITabbarController表示一个Array结构,各个ViewController是并列的。

    二、ViewController使用

    UIViewController可以使用两种方式创建,1、xib方式,2、代码方式

    (1)xib方式

    Command+N 新建文件,选Cocoa Touch UIViewController subclass,SubClass of UIViewController,勾选with XIB for user interface。定义ViewController名字是MainViewController,最终生成MainViewController.h MainViewController.m MainViewController.xib三个文件。在AppDelegate.m文件的didFinishLaunchingWithOptions方法中加载xib文件。

        self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
        // Override point for customization after application launch.
        self.window.backgroundColor = [UIColor whiteColor];
    
        MainUIViewController *vc=[[MainUIViewController alloc]initWithNibName:@"MainUIViewController" bundle:nil];
        self.window.rootViewController=vc;
    
        [self.window makeKeyAndVisible];
        return YES;
    

    加载xib文件后,在xib文件拖拽几个控件可看到效果。

    (2)代码创建

    Command+N 新建文件UIViewController文件,在AppDelegate.m文件的didFinishLaunchingWithOptions方法中使用。在UIViewControllerloadView方法中使用代码创建view

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
        self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
        // Override point for customization after application launch.
        self.window.backgroundColor = [UIColor whiteColor];
    
    //    MainUIViewController *vc=[[MainUIViewController alloc]initWithNibName:@"MainUIViewController" bundle:nil];
    //    self.window.rootViewController=vc;
    
        RootViewController *rc=[[RootViewController alloc] init];
        self.window.rootViewController=rc;
    
        [self.window makeKeyAndVisible];
        return YES;
    }
    

    创建View

    - (void)loadView{
        [super loadView];
    
        UIView *view=[[UIView alloc]initWithFrame:[UIScreen mainScreen].applicationFrame];
        view.alpha=0.5;
        view.backgroundColor=[UIColor cyanColor];
        self.view=view;
    
    }
    

    三、ViewController的生命周期

    ViewController的生命周期,这个更像Android的Activity的生命周期(见文章最后的图)。ViewController生命周期会经历初始化、加载视图、销毁视图、生命结束等过程。

    (1)init方法

    初始化ViewController本身。

    (2)loadView方法

    当view需要被展示而它却是nil时,viewController会调用该方法。

    如果代码维护View的话需要重写此方法,使用xib维护View的话不用重写。

    (3)viewDidLoad方法

    执行完loadView后继续执行viewDidLoad,loadView时还没有view,而viewDidLoad时view已经创建好了。

    (4)viewDidUnload方法

    当系统内存吃紧的时候会调用该方法,内存吃紧时,在iOS 3.0之前didReceiveMemoryWarning是释放无用内存的唯一方式,但是iOS 3.0及以后viewDidUnload方法是更好的方式。

    在该方法中将所有IBOutlet(无论是property还是实例变量)置为nil(系统release view时已经将其release掉了)。

    在该方法中释放其他与view有关的对象、其他在运行时创建(但非系统必须)的对象、在viewDidLoad中被创建的对象、缓存数据等。

    一般认为viewDidUnload是viewDidLoad的镜像,因为当view被重新请求时,viewDidLoad还会重新被执行。

    (5)dealloc

    释放其他资源或内存。

    viewController的生命周期图

    viewController的生命周期图

    ViewController加载view过程(loadView)

    loadView

    ViewController卸载View过程(unLoadView)

    unLoadView

    展开全文
  • viewController

    2019-09-30 05:54:29
    引入viewController代码: 1.在Appdelegate先引入ViewController头文件 2.ViewControllervc=(ViewControlleralloc)init; Self.window.rootViewController=vc; 然后vc就代表ViewController对象,就可以调用其...

    Xcode6,

    引入viewController代码:

     

    1.在Appdelegate先引入ViewController头文件

    2.ViewController vc =(ViewController alloc)init;

     Self.window.rootViewController = vc; 

    然后vc就代表ViewController对象,就可以调用其属性和方法了。

     般用通知来取代上面的写法:

    //

    发送通知 

    [[[[NSNotificationCenterdefaultCenter]] postNotificationName:

    通知名object::nil]; 

    //接受通知

    //IB

    创建的对象调用initWithCoder

    要复写方法;

    -(instancetype) initWithCoder(NSCoder*)coder{ 

    self = [super initWithCoder:coder]; 

    if(self){ 

    [[ 

    NSNotificationCenter 

    defaultCenter]addObserver:self 

    selector:@selector(method)name:@

    ”…

    .

    object:nil ]; 

    return self; 

    UILabel 

    多行文字自动换行(自动折行)

     UIView *footerView = [[UIView alloc] initWithFrame:CGRectMake(10, 100, 300, 

    180)]; 

    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(10, 100, 300, 150)]; 

    label.text = @"where are you? where are you? where are you? where are you? 

    where are you? where are you? where are you? where are you? where are you? 

    where are you?"; 

    //

    清空背景颜色

    label.backgroundColor = [UIColor clearColor]; 

    转载于:https://www.cnblogs.com/haolianxue/p/4301976.html

    展开全文
  • ViewController详解

    千次阅读 2018-02-28 17:38:46
    在我之前的学习笔记中讨论过ViewController,过了这么久,对它也有了新的认识和体会,ViewController是我们在开发过程中碰到最多的朋友,今天就来好好认识一下它。ViewController是IOS开发中MVC模式中的C,...
    在我之前的学习笔记中讨论过ViewController,过了这么久,对它也有了新的认识和体会,ViewController是我们在开发过程中碰到最多的朋友,今天就来好好认识一下它。ViewController是IOS开发中MVC模式中的C,ViewController是view的controller,ViewController的职责主要包括管理内部各个view的加载显示和卸载,同时负责与其他ViewController的通信和协调。在IOS中,有两类ViewController,一类是显示内容的,比如UIViewController、UITableViewController等,同时还可以自定义继承自UIViewController的ViewController;另一类是ViewController容器,UINavigationViewController和UITabBarController等,UINavigationController是以Stack的形式来存储和管理ViewController,UITabBarController是以Array的形式来管理ViewController。和Android中Activity一样,IOS开发中,ViewController也有自己的生命周期(Lifecycle)。

    首先来看看View的加载过程,如下图:


    从图中可以看到,在view加载过程中首先会调用loadView方法,在这个方法中主要完成一些关键view的初始化工作,比如UINavigationViewController和UITabBarController等容器类的ViewController;接下来就是加载view,加载成功后,会接着调用viewDidLoad方法,这里要记住的一点是,在loadView之前,是没有view的,也就是说,在这之前,view还没有被初始化。完成viewDidLoad方法后,ViewController里面就成功的加载view了,如上图右下角所示。

    在Controller中创建view有两种方式,一种是通过代码创建、一种是通过Storyboard或Interface Builder来创建,后者可以比较直观的配置view的外观和属性,Storyboard配合IOS6后推出的AutoLayout,应该是Apple之后主推的一种UI定制解决方案,后期我会专门介绍一篇使用AutoLayout进行UI制作的文章。言归正传,通过IB或Storyboard创建view,在Controller中创建view后,会在Controller中对view进行一些操作,会出现如下代码:


    展开全文
  • presentViewController 到一个半透明的viewController FirstViewController*fvc=[selfgetFirstViewController]; SecondViewController*svc=[[Second...

    presentViewController 到一个半透明的viewController

        FirstViewController *fvc = [self getFirstViewController];
        SecondViewController *svc = [[SecondViewController alloc] init];
        if ([[[UIDevice currentDevice] systemVersion] floatValue]>=8.0) {
            [svc setModalPresentationStyle:UIModalPresentationOverCurrentContext];
        }else{
            [fvc setModalPresentationStyle:UIModalPresentationCurrentContext];
        }
        [fvc presentViewController:svc animated:YES completion:nil];


    转载于:https://my.oschina.net/asjoker/blog/662289

    展开全文
  • <div><p>I have some test case classes that have ViewController in the name that are being picked up as false positives by Luft. I was wondering if there were some improvements we could do to eliminate...
  • iOS7和iOS8 开发中presentViewController: 不覆盖原先的 viewController界面的方法
  • 使用presentViewController 弹出半透明ViewController覆盖在原ViewController
  • How to show some part of Some part next viewcontroller in the present viewcontroller and How to reduce the menuItemSize size and to show the full content of the viewcontroller.</p><p>该提问来源于开源...
  • 获取viewController对象

    2019-09-19 19:10:23
    (一)Model切换 由viewController_A对象模态切换至viewController_B对象: viewController_A.presentedViewController =viewController_B; viewController_B.presentingViewController=viewController_A; ...
  • 获取最顶层的ViewController 解决 为UIApplication写个扩展 // MARK: UIApplication extensions extension UIApplication { class func getTopViewController(base: UIViewController? = UIApplication.shared....
  • I have a problem when I use a presentViewController.. Here's my case.. I have 2 centerViewControllers (let's say A and B). From A, I can launch a presentViewController. <p>1st case : When I ...
  • IOS ViewController

    2015-08-30 10:58:57
    ViewController是iOS应用程序中重要的部分,是应用程序数据和视图之间的重要桥梁,ViewController管理应用中的众多视图。iOS的SDK中提供很多原生ViewController,以支持标准的用户界面,例如表视图控制器...
  • viewController备注

    2013-11-11 15:54:00
    1、按结构可以对iOS的所有ViewController分成两类: 1)、主要用于展示内容的ViewController,这种ViewController主要用于为用户展示内容,并与用户交互,如UITableViewController,UIViewController。 2)、用于...
  • PresentViewController 如何不遮挡住原来的viewController界面呢? 可能有时候会遇到这种需求,需要弹出一个功能比较独立的视图实现一些功能,但是却不想单纯添加一个View上去,想做成viewController的形式。那么...
  • Present ViewController Modally  一、主要用途  弹出模态ViewController是IOS变成中很有用的一个技术,UIKit提供的一些专门用于模态显示的ViewController,如UIImagePickerController等。弹出模态...
  • ViewController介绍

    2014-04-01 14:50:49
    ViewController     ViewController是iOS应用程序中重要的部分,是应用程序数据和视图之间的重要桥梁,ViewController管理应用中的众多视图。iOS的SDK中提供很多原生ViewController,以支持标准的用户界面,例如...
  • 1. 在viewController中加载一个viewController 2. 在viewController上显示一个viewController 其中,取消显示的viewController的函数是 两者之间的区别是:1是在当前viewController上添加子...
  • presentViewController

    2013-08-31 01:14:39
     弹出模态ViewController是IOS变成中很有用的一个技术,UIKit提供的一些专门用于模态显示的ViewController,如UIImagePickerController等。弹出模态ViewController主要使用于一下这几种情形:  1、收集用户输入...
  • 聊聊ViewController

    2018-04-03 03:21:56
    聊聊ViewController 本来想重新复习一下ViewController的加载过程的,后来发现要写的东西还是挺多了,看了很多资料,写了很多代码,当我发现控制器的转场动画的时候,感觉这坑太大了,还是以后专门抽个时间单独地去...
  • ViewController 生命周期

    2016-08-26 19:46:21
    ViewController 生命周期
  • ViewController ViewController是IOS开发中MVC模式中的C,ViewController是view的controller,ViewController的职责主要包括管理内部各个view的加载显示和卸载,同时负责与其他ViewController的通信和协调。 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 23,335
精华内容 9,334
关键字:

viewcontroller