zoukankan      html  css  js  c++  java
  • iOS 模态视图,视图之间的切换

    视图之间的简单切换

        新建一个工程,创建两个类FiretUIViewController和SecondViewController,他们都继承与UIViewController.在每个

    类里面,即在这里的每个试图控制器里都写一个如下所示touch方法,这个方法是点击屏幕就能调用,以便我们调试程序:

                    -(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event

    还有就是每个视图的颜色都得设置一下,这样方便调试

    1.首先在AppDelegate.h文件,导入FiretUIViewController的头文件,代码如下:

     1 #import <UIKit/UIKit.h>
     2 
     3 #import "FirstViewController.h"
     4 
     5 @interface AppDelegate : UIResponder <UIApplicationDelegate>
     6 
     7 @property (strong, nonatomic) UIWindow *window;
     8 
     9 @property(strong,nonatomic)FirstViewController *firstVC;
    10 
    11 @end

    2.其次在AppDelegate.m文件里:

    在 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

     }方法里写上两句代码,代码如下:

     1 #import "AppDelegate.h"
     2 
     3 @interface AppDelegate ()
     4 
     5 @end
     6 
     7 @implementation AppDelegate
     8 
     9 //应用程序已经加载完毕
    10 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    11     self.firstVC=[[FirstViewController alloc]init];
    12     
    13     //设置根视图控制器
    14     self.window.rootViewController=self.firstVC;
    15     return YES;
    16 }

    3.实现FiretUIViewController到SecondViewController的切换,首先得在FiretUIViewController中导入SecondViewController的头文件,然后在FiretUIViewController.m文件里实现如下代码:

     1 #import "FirstViewController.h"
     2 
     3 @interface FirstViewController ()
     4 
     5 @end
     6 
     7 @implementation FirstViewController
     8 
     9 - (void)viewDidLoad {
    10     [super viewDidLoad];
    11     self.view.backgroundColor=[UIColor redColor];
    12     
    13 }
    //点击屏幕调用此方法
    14 -(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event 15 { 16 SecondViewController *secondVc=[[SecondViewController alloc] init]; 17 secondVc.modalPresentationStyle=4; 18 [self presentViewController:secondVc animated:YES completion:^{ 19 NSLog(@"从FirstViewController切换到SecondViewController"); 20 //此方法调用会执行这行代码 21 }]; 22 }

    这样就实现了FiretUIViewController到SecondViewController的切换,可是这样还不行,因为SecondViewController不能回到FiretUIViewController,所以说我们还得在SecondViewController.m文件里写上返回的方法。

    4.首先在SecondViewController文件里导入FiretUIViewController.h头文件,然后SecondViewController.m里实现如下代码:

     1 #import "SecondViewController.h"
     2 
     3 @interface SecondViewController ()
     4 
     5 @end
     6 
     7 @implementation SecondViewController
     8 
     9 - (void)viewDidLoad {
    10     [super viewDidLoad];
    11     self.view.backgroundColor=[UIColor greenColor];
    12 }
    13 -(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
    14 {
    15     [self dismissViewControllerAnimated:YES completion:^{
    16         NSLog(@"从SecondViewController返回的FirstViewController");
    17     }];
    18 }

    这就实现了从ViewController到FirstViewController得来回转换了。

    总结:

    要实现视图之间的切换,要在两个视图控制器中分别写如下两个方法。

    presentViewController: animated: completion:

    dismissViewControllerAnimated: completion:

    这两个方法一般是一起使用,才能实现两个视图之间的来回切换。我们暂且说成一个present方法,一个dismiss方法。

  • 相关阅读:
    java核心学习(二十七) 多线程---线程相关类
    java核心学习(二十六) 多线程---线程池
    java核心学习(二十五) 多线程---线程组和未处理的异常
    java核心学习(二十四) 多线程---线程通信
    java核心学习(二十三) 多线程---线程同步
    java核心学习(二十二) 多线程---线程控制
    模线性方程 poj2115
    求两个圆的重合面积+二分 hdu3264
    求多边形面积 HDU2036
    判断两直线是否相交 hdu1086
  • 原文地址:https://www.cnblogs.com/zhaochaobin/p/5276977.html
Copyright © 2011-2022 走看看