首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在从ViewController 1序列到ViewController 2之后,有没有办法让VC2知道VC1已经完成了异步数据加载(swift)?

在从ViewController 1序列到ViewController 2之后,可以通过多种方式让VC2知道VC1已经完成了异步数据加载。

一种常见的方式是使用代理模式。在VC1中,定义一个代理协议,并在协议中声明一个方法,用于通知数据加载完成。VC1成为该代理协议的代理,并在数据加载完成后调用代理方法。在VC2中,实现代理协议,并将VC1设置为其代理。这样,当VC1完成数据加载时,会通过代理方法通知VC2,从而VC2可以得知VC1已经完成了异步数据加载。

另一种方式是使用闭包(Closure)。在VC1中,定义一个闭包属性,并在异步数据加载完成后调用该闭包。在VC2中,可以通过将闭包作为参数传递给VC1,从而在VC1完成数据加载时得到通知。

除了以上两种方式,还可以使用通知中心(NotificationCenter)来实现VC1和VC2之间的通信。在VC1中,当数据加载完成后,发送一个自定义的通知。在VC2中,监听该通知,并在接收到通知时执行相应的操作。

这些方法都可以实现VC2知道VC1已经完成了异步数据加载。具体选择哪种方式取决于项目的需求和架构。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

iOS - RxSwift 项目实战记录

分类,Moya请求进行Json转模型或模型数组 ├── Model │ └── LXFModel.swift // 模型 ├── Protocol │ └── LXFViewModelType.swift...section,所以这个方法可实现,也可以不实现,默认返回的就是1,这给我们带来的一个迷惑点:【tableView是由row来组成的】,不知道在坐的各位中有没有是这么想的呢??...携带的数据进行处理,生成了一个Output 注意: 以下代码为了方便阅读,进行了部分删减 LXFViewModel.swift extension LXFViewModel: LXFViewModelType...已经拿到output,当下拉加载数据的时候,使用output的requestCommond发射信息,告诉viewModel我们要加载数据 viewModel请求数据,在处理完json转模型或模型数组后修改...models,当models的值被修改的时候会发信号给sections,sections在ViewController已经绑定到tableView的items了,所以此时tableView的数据会被更新

2.9K41
  • iOS无埋点数据SDK实践之路

    3. viewPath 的表示形式与示例 我们已经知道,viewPath就是由各节点的类名与深度组成,那么接下来就使用这些信息来表示出 viewPath。...还是举一个简单的栗子: 假设一个 containerVC 中包含4个子VC:VC1VC2、VC3、VC4。...这时候这几个子VC首次的查看顺序的不同将会导致它们的深度的变化:如果查看顺序是:VC1VC2、VC3、VC4,那么它们的深度依次为:VC1(0)、VC21)、VC3(2)、VC4(3);如果查看顺序是...:VC3、VC1、VC4、VC2,深度则变成了VC11)、VC2(3)、VC3(0)、VC4(2)。...不过这种方案会引起另一个小问题,如果上述子 VC 的 VC1VC2 是同一个类的不同实例,那么他们内部的视图结构是完全一样的,这时候如果使用固定的 VC 深度(0),通过viewPath就无法区分具体是哪个子

    1.6K20

    iOS 9 Storyboard 教程(二下)

    当用户点击Cancel按钮的时候,这个控制器将会关闭并且不管你输了什么数据都不会保存.这个部分用unwind segue已经起作用了....你永远不会手动调用prepareForSegue(_:sender:)方法.它是一条从UIKit发出的信息,知道那个segue已经被触发了. ---- 在PlayerDetailsViewController.swift...Paste_Image.png 性能 现在在storyboard中有几个viewController,你也许想知道关于他们的性能.立刻加载整个storyboard也不是很大的问题.storyboard并没有马上实例化所有的...viewController–只有初始viewController是被立即加载的.因为你的初始viewController是一个 TabBarontroller,它所包含的两个viewController...(coder:)输出的状态信息.这就会是你相信了,ViewController是在使用的时候才加载的.

    2.2K10

    iOS面试招人分享

    下面是我出的面试题 1.下面这种写法有问题吗 #import "ViewController.h" @interface ViewController () @property (nonatomic...按时间细数一下面试的情况,面试的时候我们领导会跟我一起,我问面试者答,领导听(领导也懂技术),面技术之后领导会问其他的。...每次面试我都会主动联系领导,告诉领导我这边面试得到的结果,好就是好,不好就是不好,直接告诉我对技术最真切的面试结果,其他的领导自己权衡,所以这个女生pass了。...会swift吗? 有看博客,写博客吗 10.讲下你工作中遇到的一些问题和如何解决它们的,讲下你的优点 1.第一题其实是没有任何问题的,这道题考的其实是开发者对代码的掌控程度,信心。...问的时候都说会用,用得最多GCD,问到GCD的同步异步和队列组合用法,不会;问到GCD中的group、queue、semaphore、barrier等,几乎都不会,说知道的,问得细一点,还是不会。

    92460

    携程、阿里、京东、腾讯iOS春招面试过程以及面试题总结!

    携程面试题 一面 请看下面一段代码static int a = 1; int main(){ int m = 2; char *n = NULL; l = (char *)malloc(100 * sizeof...假设ViewController中需要用一个Blcok来改变ViewController中的一个属性,需要怎么实现? 这样实现之后,这个Block在内存中被存在何处?引用关系又是怎么样的?...第一面面之后完全没涉及到iOS相关的知识,导致我面之后问面试官是不是我当时投错了岗=。=!另外,腾讯HR态度是真的很好,赞一个。 一面 为什么要设计Cache?Cache分级有什么好处?...二面 反转字符串 判断整数是否为$2^n$ 一个m*n的棋盘,有些格子不能走,如何找到左上角到右下角的最短路径? iOS 按下 Home 键之后会发生什么? c++中内存分配是怎样的?...项目中有没有服务器push机制? * * *结语

    1.5K00

    关于IB_DESIGNABLE IBInspectable的那些需要注意的事

    2.代码或者Xib依旧不显示自定义控件的样子 如果你按照上面的第一个问题里面加上了bundle的代码之后还是不显示,那可能是你代码加的地方不对。...如果我们现在自定义View的时候也是相同做法,创建Xib文件之后,File‘s owner关联好了之后。然后在Custom Class里面填上了我们自定义的类之后,这个时候就错了!...,解析之后会调用到ClassSwapper 的initWithCoder,由于我们class写了自己,这里就陷入死循环了。...initWithNibName要加载的Xib的类为我们定义的ViewController。loadNibNamed要加载的Xib的类为NSOjbect。...loadNibNamed是立即加载,调用这个方法加载的xib对象中的各个元素都已经存在。

    1.6K30

    iOS秋招总结 = 面经 + 闲言碎语 (不断更新)

    然后秋招的时候由于实习比较忙,所以基本上就只投了秋招正式批,内推要么没投,要么踩线投,直接没了音信…… 楼主iOS开发(已经属于小众团体了),主要用的Swift语言(我就没发现有和我一样的)。...假设ViewController中需要用一个Blcok来改变ViewController中的一个属性,需要怎么实现? 这样实现之后,这个Block在内存中被存在何处?引用关系又是怎么样的?...第一面面之后完全没涉及到iOS相关的知识,导致我面之后问面试官是不是我当时投错了岗=。=!另外,腾讯HR态度是真的很好,赞一个。 一面 为什么要设计Cache?Cache分级有什么好处?...二面 反转字符串 判断整数是否为$2^n$ 一个m*n的棋盘,有些格子不能走,如何找到左上角到右下角的最短路径? iOS 按下 Home 键之后会发生什么? c++中内存分配是怎样的?...项目中有没有服务器push机制? 结语 秋招投的简历不多,面试也就这几家,还有几家在安排面试,之后有更新再继续更新。

    1.6K40

    Swift-Runtime总结

    也就有了下面这两点结论:      1、在编译阶段,OC可以调用任何函数,即使这个函数并未实现,只要声明过就不会报错。      2、在编译阶段,C语言调用未实现的函数就会报错。...SwiftSwift类的函数的调用已经不是OC的运行时发送消息,和C类似,在编译阶段就确定了调用哪一个函数,所以纯Swift的类我们是没办法通过运行时去获取到它的属性和方法的。      ...那这样就又衍生出一个问题   ----       那Swift就没办法利用Runtime了吗?       想一想,要是真的Swift办法利用Runtime,那是一件得多人失望的事!...(以前面试有人问过OC怎样Hook一个消息,那时候太懵懂,不知道怎么说!不知道大家有没有遇到过?)      ...对于纯粹的Swift类,由于前面的测试你知道无法拿到类的属性饭方法等,也就没办法进行方法的替换,但是对于继承自NSObject的类,由于集成了OC的所有特性,所以是可以利用Runtime的属性来进行方法替换

    91030

    Swift Runtime ?

    也就有了下面这两点结论:      1、在编译阶段,OC可以调用任何函数,即使这个函数并未实现,只要声明过就不会报错。      2、在编译阶段,C语言调用未实现的函数就会报错。...SwiftSwift类的函数的调用已经不是OC的运行时发送消息,和C类似,在编译阶段就确定了调用哪一个函数,所以纯Swift的类我们是没办法通过运行时去获取到它的属性和方法的。      ...那这样就又衍生出一个问题         那Swiftw就没办法利用Runtime了吗?       想一想,要是真的Swift办法利用Runtime,那是一件得多人失望的事!...(以前面试有人问过OC怎样Hook一个消息,那时候太懵懂,不知道怎么说!不知道大家有没有遇到过?)            ...对于纯粹的Swift类,由于前面的测试你知道无法拿到类的属性饭方法等,也就没办法进行方法的替换,但是对于继承自NSObject的类,由于集成了OC的所有特性,所以是可以利用Runtime的属性来进行方法替换

    4.9K71

    class dump使用方式和原理

    只要是ipa都可以,不限制OC,Swift,Flutter,React Native,H5类app。 ​...这里是流水式的走下来,所以只需要导入和导出就可以了, ​ 添加单个文件,选择好刚刚混淆后的包,然后你做的事情就是等,等待上传--加固--下载--已完成,当到已完成的时候,说明这里已经可以导出了,导出需要前面提到的自己创建的签名...​ 发现dump后的还多了几个方法 对比一下: cxx_destruct是析构方法 在原ViewController里没有显示调用 自从使用了ARC模式之后 didReceiveMemoryWarning...2:对私有框架进行提出 ​ 查找资料 无果 仍然显示: This file does not contain any Objective-C runtime information....采用swift编写或是关键部分采用C语言编写的模块是无法dump出头文件的 据说xcode7之后ios9之后,dylib变成tdb,所有的私有函数的dump就无法使用class-dump而只能使用runtime

    49110

    让你在WebView中用JS调Native Object

    我最开始是想看看在JS中有没有办法实现像forwardinvocation这样的东西,如果有的话我就可以根本不需要提前去注入了,只需要调用的时候去查找就好了。...([1,2,"2"]); 然后本地的方法就会被调用,看起来比较神奇,其实一切都因为OC的动态性。...本地如果判断到了最后一个参数是个callback,那么就会异步去调用本地的方法,完成之后再会通过callback把值给回JS中。 那么是如何实现JS向本地传递一个callback的呢?...在做这点的时候有点取巧,其实我根本就没有把function传到本地来,它始终是存在于JS中的,只是相当于把这个callback的名字告诉给了OC这边,然后本地完成了工作之后,只需要告诉JS我需要哪个callback...JS再去找到这个callback,并把参数传给它,从而完成了异步调用。 当然,如果你有更好的方案欢迎告诉我怎样完善这部分。 结尾 这个项目目前我已经放到Github上了,欢迎围观,欢迎批评!

    2.4K30

    iOS的内存管理

    对于这种情况,有一个暴力的做法,就是对象 A 在调用完对象 B 之后,马上就销毁参数对象 M,然后对象 B 需要将参数另外复制一份,生成另一个对象 M2,然后自己管理对象 M2 的生命期。...我们另外还有一种办法,就是对象 A 在构造对象 M 之后,始终不销毁对象 M,由对象 B 来完成对象 M 的销毁工作。...主动断开循环引用 解决循环引用问题主要有两个办法,第一个办法是我明确知道这里会存在循环引用,在合理的位置主动断开环中的一个引用,使得对象得以回收。如下图所示: ?...,在网络请求结束后,网络请求对象执行 block 之后,主动释放对于 block 的持有,以便打破循环引用。...举个例子来说,两个 ViewController A 和 B,ViewController A 需要弹出 ViewController B,用户输入一些内容,当用户输入完成后,ViewController

    98380

    iOS性能优化之启动优化

    所以在运行时,dyld加载共享缓存,加载链接动态库之后,进行binding操作,重新绑定外部符号 ObjC setup time:注册OC类的耗时 注册OC类的过程,读取二进制的data段找到OC的相关信息...应用启动时,系统会生成类和分类的两张表,OC类和分类的注册,会插入到这两张表中,所以会造成一定的时间消耗 这部分时间很难优化,除非减少项目中类和分类的定义 减少类和所属分类load方法的使用,类以懒加载的方式加载...但不能直接跨进程访问,保证数据的安全 2.2 缺页中断 当程序访问未被缓存的内存页时,就会触发缺页中断 缺页中断会将当前进程阻塞掉,此时需要先将数据载入到物理内存,然后再寻址,进行读取 部分情况下,被访问的页面已经加载到物理内存中...二进制重排 4.1 缺页中断的消耗 当系统访问虚拟内存时,发现数据还未加载到物理内存中,会触发缺页中断(Page Fault),造成进程阻塞。此时系统会先将数据加载到物理内存中,进程才能继续运行。...[ 2] +[AppDelegate load] 0x100005FAC 0x0000009C [ 3] _main 0x100006048 0x00000048 [ 1] -[ViewController

    1.8K11

    Swift基础语法(四)

    Result 在Swift5之前,我们一般是采用上面的方式来处理异常,在Swift5之后,苹果推出了一个Result枚举,Result枚举可以更加优雅地去处理异常。...{ func protocolMethod1() func protocolMethod2() } class ViewController: UIViewController {...Swift项目中调用Objective-C 1,新建一个Swift的iOS项目 2,创建一个OC的类,此时会有如下提示,选择Create Bridging Header: ?...1,新建一个Objective-C项目 2,创建一个Swift的类,继承自NSObject,此时也会有上面的提示,选择Create Bridging Header 3,此时项目中会多出两个文件,...在程序中获取命名空间 通过上面的介绍我们已经知道可以通过info.plist来获取命名空间的名称,那么如何代码解析info.plist,并拿到CFBundleExecutable所对应的值呢?

    3.9K20

    iOS App 启动性能优化

    【第一部分】一些小科普 因为篇幅的限制,没有办法很详尽的说明一些原理性的东西,只是方便大家了解哪些事情可能跟启动性能有关。同时,内容相对也比较入门,大神们请跳过这一部分。 1....= @"red"; [self addChildViewController:tab1]; UIViewController *tab2 = [[[MQQTab2ViewController...:didFinishLaunchingWithOptions:] -[MQQTab2ViewController viewDidLoad] (点击了第二个tab之后加载) -[MQQTab3ViewController...App完成所有联网数据加载并将相应的信息展示给用户 1+2一起决定了我们需要用户等待多久才能出现一个主视图,同时也是技术上可以精确测量的时长,1+2+3决定了用户视觉上的等待出现有用信息所需要的时长...不知道大家有没有相关的经验可以分享,也请不吝赐教。 3.

    2.2K92

    Swift-MVVM 简单演练(一)

    并且对比一下swift和objective-c的延迟加载异同点 模拟延迟加载数据 /// 加载数据 override func loadData() { // 模拟`延时`加载数据...reloadData() } } swift 延迟加载 // 模拟`延时`加载数据 DispatchQueue.main.asyncAfter(deadline: DispatchTime.now...如果没有 通过网络请求加载默认的.json文件 如果有 直接使用沙盒里面保存的.json文件 网络请求异步加载新的.json文件,等下一次用户再次启动APP的时候就可以显示比较新的配置文件了 在AppDelegate...,再点击好友按钮push出来的控制器的所有的返回按钮都变成了注册。...是在网络请求方法执行以后的完成回调。即闭包在函数执行以后被调用了,调用的地方超过了request函数的范围,这种闭包叫做逃逸闭包。

    10.3K51
    领券