UISB UIViewController

 

main.m

#import <UIKit/UIKit.h>
#import "AppDelegate.h"

//整个APP程序的主函数 入口函数


int main(int argc, char * argv[]) {
    NSString * appDelegateClassName;
    
    //自动内存释放池
    @autoreleasepool {
        // Setup code that might create autoreleased objects goes here.
        appDelegateClassName = NSStringFromClass([AppDelegate class]);
    }
    //UIKit 框架结构的启动函数
    //参数一 agrc 启动时带有参数的个数
    //参数二 argv 参数列表
    //参数三 要求传人一个主框架类对象,如果参数为nil 系统会用默认框架类作为主框架类名
    //参数四 主框架的代理类的名字
    
    return UIApplicationMain(argc, argv, nil, appDelegateClassName);
}

 

SceneDelegate.m

#import "ViewController.h"
#import "SceneDelegate.h"

@interface SceneDelegate ()

@end

@implementation SceneDelegate


- (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session options:(UISceneConnectionOptions *)connectionOptions {
   
    //创建一个window对象
    //UISCreen :表示屏幕硬件类
    //mainSCreen: 获取主屏幕对象
    //.bounds 获取当前主屏幕的大小
    
    if (@available(ios 13, *)) {
    if (scene) {
            self.window = [[UIWindow alloc] initWithWindowScene:(UIWindowScene *)scene];
            self.window.frame = CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height);
//            self.window.backgroundColor=[UIColor redColor];
        
    
            //创建视图控制器对象
            ViewController* vcroot =[[ViewController alloc] init];
            
            //对窗口的根视图控制器进行赋值操作 属于windows属性
            //整个UIKit框架中只有一个根视图控制器 属于windows的属性
            //视图控制器用来管理界面和处理界面逻辑类对象
        
            //程序启动前必须对根视图控制器赋值
            
            self.window.rootViewController=vcroot;
            
            //将windos作为主视图并且显示出来
            [self.window makeKeyAndVisible];
            
            
    
    }
        
    }
    
    
}

UIViewController.m

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController
//当视图控制器第一次被加载显示视图时,调用此函数
//布局初始化视图来使用,初始化资源使用
//调用父类的加载视图函数
- (void)viewDidLoad {

    
    [super viewDidLoad];
    
    UIView* view =[[UIView alloc]init];
    
    view.frame=CGRectMake(100, 100, 100, 200);
    
    //将视图添加在当前控制视图上
    [self.view addSubview:view];
    view.backgroundColor=[UIColor orangeColor];
    self.view.backgroundColor=[UIColor blueColor];
    

}


@end

 

UIViewController 使用

ViewController.m

 

#import "ViewController.h"
#import "ViewC02.h"
@interface ViewController ()

@end

@implementation ViewController

//当屏幕点击时调用此函数
-(void) touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
    //创建视图控制器二
    ViewC02* vc=[[ViewC02 alloc]init];
    
    //显示一个新的视图控制器界面到屏幕上
    //P1 新的视图控制器对象
    //P2 是否使用动画切换效果
    //P3 切换结束后功能调用 不需要传nil
    
    [self presentViewController:vc animated:YES completion:nil];
    
    
}


//第一次程序加载视图是调用

- (void)viewDidLoad {
    [super viewDidLoad];
    self.view.backgroundColor=[UIColor blueColor];
    NSLog(@"viewDidLoad 第一次加载视图");
    
    
}



//当视图控制器的视图即将显示时,调用此函数
//视图分为: 1.显示前 2.正处于显示状态 3.已经被隐藏
//参数 表示是否有动画切换后显示

-(void) viewWillAppear:(BOOL)animated
{
    NSLog(@"viewWillAppear,视图即将显示");
}

//视图还是显示在屏幕上
-(void) viewWillDisappear:(BOOL)animated
{
    NSLog(@"viewWillDisappear,视图即将消失");
}

//当视图已经显示到屏幕后到瞬间调用此函数
//参数: 表示是否调用动画切换显示的
//当前状态已经显示到屏幕上了
-(void) viewDidAppear:(BOOL)animated
{
    NSLog(@"viewDidAppear,视图已经显示");
}

//当前试图已经消失从屏幕上
//参数: 表示是否用动画切换显示的
//当前状态当前视图控制器已经消失在屏幕上

-(void) viewDidDisappear:(BOOL)animated
{
    NSLog(@"viewDidDisappear,视图已经消失");
}


@end

 

ViewC02.m

 

#import "ViewC02.h"

@interface ViewC02 ()

@end

@implementation ViewC02

- (void)viewDidLoad {
    [super viewDidLoad];
    //控制器2颜色
    self.view.backgroundColor=[UIColor orangeColor];
}

//点击当前控制器二界面屏幕时
-(void) touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
    //使当前控制器消失掉
    //P1: 是否动画效果
    //P2: 结束后是否调用功能
    
    [self dismissViewControllerAnimated:YES completion:nil];
    
}

@end

 

posted @ 2020-09-10 22:30  逆欢  阅读(124)  评论(0编辑  收藏  举报