• iOS学习之页面之间传值的方式总结


    传值三种场景:

    1.属性传值(从前往后传)

    需求:第二个界面标签显示第一个界面输入框文字.

    第一步, 在前一个界面定义属性. (语义属性声明为copy);

    第二步, 在进入下一个界面之前,给属性传入数据.

    第三步, 在后一个界面读取数据.

    2.代理传值(从后往前传)

    需求:

    第一步:在后一个界面定义协议;并且定义一个方法,有一个参数,参数类型和传值类型一样;

    第二步:定义代理属性.语义特性为assign, 类型为id,并且服从协议.id<xxxdelegate>;

    第三步:寻找代理对象,(在push之前)为后一个界面指定代理对象为前一个界面.

    第四步:服从对应的协议(直接在.m文件延展后服从);

    第五步:实现协议中的方法;

    第六步:告诉代理对象什么时候(时机)执行协议中的方法(做安全处理,respondsTo);

    block传值(从后往前传值)

    待完成.

    3.间隔多个界面传值: 方式 --- 单例传值(和属性传值类似).

    第一步,创建单例类.

    第二步:定义创建单例的方法.

    + (Singleton *)mainSingleton;

    第三步,定义属性,存储传输的数据.

    在.h文件中定义属性
    @property (nonatomic, copy) NSString *text;

    在.m文件中实现时,要注意加上线程保护.(因为可能会出现单例还没有创建出来的时候,就去执行了访问.单线程可以保证访问之前创建的方法肯定执行完了,也就是单例已经创建出来了.)

    static Singleton *single = nil;//保证第一次初始化时,能够将单例创建出来.

    + (Singleton *)mainSingleton {

        @synchronized(self) {

            if (!single) {

                single = [[Singleton alloc] init];

            }

        }

        return single;

    }

  • 相关阅读:
    OpenCV-Python 模板匹配 | 三十一
    OpenCV-Python 傅里叶变换 | 三十
    OpenCV-Python 直方图-3:二维直方图 | 二十八
    OpenCV-Python 直方图-4:直方图反投影 | 二十九
    角谷猜想
    C# Notepad++ 环境配置
    C++ Notepad++ 环境配置
    字符串内无重复字符的最长子串长度
    计算给定字符串的无重复字符的最长子串长度
    黑色星期五
  • 原文地址:https://www.cnblogs.com/ErosLii/p/4505263.html
Copyright © 2020-2023  润新知