zoukankan      html  css  js  c++  java
  • IOS开发之页面间传值的几种小方法

    最正经的页面间传值方式莫过于代理传值,今天写的几种小方法不包括代理传值,因为是自学的原因,现在都不知道这几种方法的优缺点,往知道的朋友指正一下;

    第一种:属性传值;(这种方法在故事版无效,适合纯代码编写时使用,为什么???)

        前提:比如说有两个视图控制器:AViewController和BViewController,他们之间想从A传值到B,

        ——》在AViewController.m文件中

               (1)导入BViewController

               #import "BViewController.h"

               (2)定义全局变量

               比如:我们在A中加一个UITextfield控件,将他的值传递到B

    @property (nonatomic, strong) UITextField *text;

               (3)需要传值的地方编码

        BViewController *Bvc = [[BViewController alloc] initWithNibName:nil bundle:nil];
        //赋值
        Bvc.chuanzhi = text.text;
        //跳转
        [self.navigationController pushViewController:Bvc animated:YES];

             ——》在BVIewController.h文件中

              定义上一步编码时,赋值时Bvc.chuanzhi 的变量就是我们需要在.h文件中定义的;

    @property (nonatomic, strong) NSString *chuanzhi;

         ——》在BViewController.m文件中

              这样我们就可以在B中随处使用传递过来的值;

    第二种:segue传值;

    前提:比如说有两个视图控制器:AViewController和BViewController,他们之间想从A传值到B,它们之间的连线Identifier:aTob

      ——》AViewController.m文件中

         (1)打开下面这个方法

    - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender

       

        (2)在其中进行传值

           

    // In a storyboard-based application, you will often want to do a little preparation before navigation
    - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
        
        if([segue.identifier isEqualToString:@"aTob"])
        {
            id theSegue = segue.destinationViewController;
            //赋值
            [theSegue setValue:@"A页面的值" forKey:@"自己的KEY"];
    
        }
    }

        

         ——》在BviewController中的操作和上一种方法一样

     第三种:用NSUserDefaults传值;

           ——》AViewController中

          需要传值的地方编码

        //存储数据
        NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
        [defaults setObject:@"A界面需要传递的值" forKey:@"自己的KEY"];
    
        //设置同步
        [defaults synchronize];

          ——》BViewController文件中

            在ViewDidLoad中编码读取传递过来的值

        //读取A界面传递过来的值
        NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
        self.userId = [defaults valueForKey:@"自己的KEY"];

           

  • 相关阅读:
    CAD中的各种Polyline
    在CAD二次开发中使用状态条按钮
    在CAD二次开发中使用进度条
    EXSI6.5复制文件太慢的解决方法
    vlan交换机的端口模式有哪几种
    此计算机上的安全设置禁止访问其他域的数据源
    Could not write to output file 'c:WindowsMicrosoft.NET ASP.NET Filesxx' -- 'Access is denied
    添加现有文件夹到项目解决方案
    SSM-MyBatis-18:Mybatis中二级缓存和第三方Ehcache配置
    SSM-MyBatis-17:Mybatis中一级缓存(主要是一级缓存存在性的证明,增删改对一级缓存会造成什么影响)
  • 原文地址:https://www.cnblogs.com/czjie2010/p/4539841.html
Copyright © 2011-2022 走看看