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

将变量从一个ViewController传递回之前的一个,但变量没有更新?

在iOS开发中,将变量从一个ViewController传递回之前的一个,但变量没有更新的问题可能是由于以下几个原因导致的:

  1. 传递方式不正确:确保你使用了正确的传递方式。常见的传递方式包括使用代理模式、闭包(block)、通知中心、单例模式等。根据具体情况选择适合的传递方式。
  2. 变量未正确更新:在传递变量之前,确保变量的值已经被正确更新。可以通过打印变量的值或者使用调试工具来确认变量的值是否正确。
  3. 视图控制器生命周期问题:如果你在目标视图控制器中使用了viewDidLoad()方法来获取传递的变量值,可能会导致变量没有更新。因为viewDidLoad()方法只会在视图控制器第一次加载时调用,后续的切换不会再触发该方法。可以考虑使用viewWillAppear()或viewDidAppear()等方法来获取传递的变量值。
  4. 传递的目标视图控制器不正确:确保你传递的目标视图控制器是正确的,并且在导航栈中存在。如果目标视图控制器没有正确初始化或者没有被正确添加到导航栈中,可能导致变量没有更新。
  5. 数据传递的时机不正确:确保你在正确的时机传递变量。如果你在目标视图控制器加载之前就尝试传递变量,可能会导致变量没有更新。可以考虑在目标视图控制器加载完成后再传递变量。

总结起来,解决将变量从一个ViewController传递回之前的一个,但变量没有更新的问题,需要确保传递方式正确、变量已正确更新、视图控制器生命周期正确处理、传递的目标视图控制器正确以及传递时机正确。根据具体情况进行排查和调试,以确保变量能够正确传递和更新。

(以上答案仅供参考,具体情况可能需要根据实际代码和环境进行分析和解决。腾讯云相关产品和产品介绍链接地址请参考腾讯云官方文档或咨询腾讯云官方支持。)

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

相关·内容

iOS中storyboard故事板使用Segue跳转界面、传值

,但后来又出了一种方式,就是storyboard故事板子,其实storyboard和xib文件很像,最大的不同之处在于一个xib文件对应一个ViewController视图控制器,而storyboard...对应多个,基本一个应用只需要一个storyboard就可以了,不再需要为每个控制器创建一个xib文件,从这点上来说,还是很方便的,在storyboard中查看各个界面的跳转也很方便,但之前一直使用xib...,因为这里要实现界面跳转,只有自带的一个ViewController不够,我们再创建一个,command+N键创建一个Cocoa Touch Class。...要从Page2跳回到Page1,可 不能像上面一样再拉一个Segue回到Page1的视图 ,这样在跳转的过程中,跳一次添加一个新视图,跳一次添加一个新视图,原来的视图都没有消去,会一直累加的,并不是 回到...我们传值有两种方式,正好在两个传输过程中使用,先看第一个方法,实现从Page1传值到Page2: 我们先在Page2中定义一个变量用来接收所传递的值: // Page2的.h文件中 @property

1.5K20

【iOS 开发】ViewController 减负记录

前言 最近在重构一个以前写的老项目,在尝试给之前的 ViewController 减负,尽量抽离代码到其他文件。...但是,基本上你不可能只有一个 ViewController,有了这种习惯之后,会让全局变量没有逻辑地分散在不同的代码文件里,不易于管理(甚至可能会出现同一个东西以不同的名字被创建了多次的情况),而且代码可读性会严重降低...解决起来其实很简单,我当前这个项目的缩写是 GM,于是我建了一个叫 GMConstants 的 Class,把所有之前的全局变量都放到这里,写成 static let 的形式。...---- 布尔标记 刚刚提到不建议以整合常量的方式来整合变量,不过后续又发现之前会用这样一种方式来处理逻辑:先写一个值为 false 的布尔变量,以此作为一种标记,后续根据情况来不断地修改该值为...虽然目前认为这种方式并不是优雅的写法,因为这样一个布尔标记的作用范围太大了,虽然写代码的时候知道,某种情况 true,另一种情况 false,但以后修改的时候

66610
  • Swift 项目 - Xib | StoryBoard 多人协作技巧

    但这并不应该是Storyboard的锅,仅仅是使用者对工具的滥用! 没错,就是滥用,无论是Storyboard也好,纯代码也罢,它们的本质都是工具,工具本身没有正义或邪恶,影响工具的是使用者。...每个模块独立Storyboard image.png 每个Storyboard只应该有一个主VC和同页的子VC,主VC不应存在2个以上 image.png 一个项目中,Storyboard不该是孤立存在的...这样我们可以将功能图标的CollectionView的代码放到这第一个子控制器上,CollectionViewDelegate、CollectionViewDataSource等代码也由子控制器实现...通过 Container View 创建的ChildViewController如何与主ViewController传参或互相调用?...它的本质是一个继承自NSObject的子类,我们完全可以把它当成一个小功能模块的控制器。

    2.1K20

    Swift 基本语法02-let和var

    一个iOS开发初级菜鸡.png Swift 基本语法01-Swift简介 Swift 基本语法03-"if let"和"guard let" Swift 基本语法04-"switch"和"for"...Swift 基本语法05-"String" Swift 基本语法06-数组和字典 1.let(常量)和var(变量)可选项的默认值 1.1 let(常量)的可选项没有默认值 1> 常量在使用之前要被初始化...)的可选项的默认值为nil 1> 如果变量的值没有改变,只会警告我们把var改变为let // Variable 'x' was never mutated; consider changing to...是一个简单的三目运算符 * 如果有值,使用值 * 如果没有值,使用'??'后面的值代替 */ print((x ?? 0) + (y ??...`的优先级最低 * 如果'name'有值,最后执行'??'运算符,因此输出结果为"老王" * 使用的时候,建议用'( )'将'??'

    80760

    View Controller编程指南

    UIViewController类定义了管理你的View,处理事件,从一个ViewController转换到另一个ViewController,以及协调你的应用程序的其他部分的方法和属性。...添加自定义变量会创建一个类似于图所示的关系,其中ViewController具有对数据的引用以及用于呈现该数据的View。 你的工作是在两者之间来回移动数据。...ViewController可以存储它接收的任何数据的副本,以便更新View,但文档仍然拥有真实的数据。 交互 ViewController是响应者对象,能够处理响应者链中的事件。...容器型ViewController将一个或多个子ViewController的内容与可选的自定义View混合在一起,以创建其最终界面。...没有ViewController应该有关于另一个ViewController的内部工作或View层次结构的知识。

    1.3K20

    iOS 中block结构的简单用法 原

    自从block出现之后,很多API都开始采用这样的结构,由此可见,block确实有许多优势存在,这里将一些简单用法总结如下: 一、如何声明一个block变量 我们通过^符号来声明block类型,形式如下...: void (^myBlock)(); 其中第一个void是返回值,可以是任意类型,中间括号中^后面的是这个block变量的名字,我把它命名为myBlock,最后一个括号中是参数,如果多参数,可以写成如下样式...int (^myBlock)(int a,int b) ; -(void)func:(myBlock)block ; 二、如何实现一个block 既然block可以被声明为变量,那么就一定可以实现它,就像其他类型变量的赋值...注意:1、在上面的代码里 block1是一个对象,如果直接打印将打印对象地址         2、block(),加上后面的括号才是执行block语句块 三、block中访问对象的微妙关系 1、如果你在一个...注意:根据这个机制,如果我们将block用来传值,在block不用时,务必要置为nil,而在实现block的方法里,务必要释放;我们通过代码来解释: 首先,创建三个ViewController,为ViewController1

    58930

    iOS学习——内存泄漏检查及原因分析

    项目的代码很多,前两天老大突然跟我说项目中某一个ViewController的dealloc()方法没有被调用,存在内存泄漏问题,需要排查原因,解决内存泄漏问题。...由于刚加入项目组不久,对出问题的模块的代码还不太熟悉,所以刚拿到问题时觉得很棘手,再加上作为一个iOS菜鸟,对内存泄漏的排查方法和原因确实基本上不了解。...target:self 就增加了ViewController的return count,如果你不将这个timer invalidate,将别想调用dealloc。...2.2 ViewController中的代理delegate   一个比较隐秘的因素,你去找找与这个类有关的代理,有没有强引用属性?...2.3 ViewController中Block 这个可能就是经常容易犯的一个问题了,Block体内使用实例变量也会造成循环引用,使得拥有这个实例的对象不能释放。

    2.1K70

    KVO 正确使用姿势进阶及底层实现你要知道的KVC、KVO、Delegate、Notification都在这里

    但KVO还有一个可能会产生错误的地方,在看下一个栗子之前有一点需要说明,有时候我们可能在一个视图中监听很多模型对象,当然了可以按照我们常用的通过keyPath字符串来判断产生回调的具体是哪个属性值,但如果监听很多属性值...答案是context,初学者经常直接将context置为nil,但context才是KVO保证正确运行的关键。...可能第一感觉还是设置为NSString类型,但这样仍然可能会产生冲突,苹果推荐的做法是创建一个静态变量然后使用该静态变量的地址作为context,通过这样的方法就能够保证context的独一无二。...子视图控制器 ViewController不监听模型,包括一个按钮用于创建SubViewController并展示 DisplayViewController还是之前栗子的 SubViewController...正确的使用姿势应当如下: 使用静态变量地址作为context,并且为每一个监听的属性都创建一个context,尽量不使用keyPath作为区分条件。

    1.6K80

    编码篇-Block里面的小天地

    variables,capture 过来的变量,block 能够访问它外部的局部变量,就是因为将这些变量(或变量的地址)复制到了结构体中。...简单地讲,如果一个block中没有引用外部变量并且没有被其他对象持有,就是NSConcreteGlobalBlock。...NSConcreteMallocBlock其实就是一个block被copy时,将生成NSConcreteMallocBlock,不过值得注意的是NSConcreteMallocBlock会持有外部对象。...clang 提供一个命令,可以将 Objetive-C 的源码改写成 c 语言的,借此可以研究 block 具体的源码实现方式。...typedef void(^Blo)(NSString *s1,UIColor *c); 逆向传值 前面我们已经知道Blcok是一个匿名函数,同时也是一个指针,那么使用Block就可以弥补在iOS中函数传递的功能

    63120

    iOS,面试必看,最全梳理

    简述类目category优点和缺点 优点: 不需要通过增加子类而增加现有类的行为(方法),且类目中的方法与原始类方法基本没有区别; 通过类目可以将庞大一个类的方法进行划分,从而便于代码的日后的维护、更新以及提高代码的阅读性...比如说,外部传一个模型过来,那么我会直接重写Setter方法,当模型传过来时,也就是意味着数据发生了变化,那么视图也需要更新显示,则在赋值新模型的同时也去刷新UI。...如一个TableView中有10个单元格,但屏幕最多显示4个,实际上iPhone只为其分配4个单元格的内存,没有分配10个,当滚动单元格时,屏幕内显示的单元格重复使用这4个内存。...线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。...,先让A修改,然后提交到服务器,然后B更新下来,再进行修改; 2.服务器上的项目文件Xcodeproj,仅让一个人管理提交,其他人只更新,防止文件发生冲突。

    1.2K30

    iOS两年前的面试题总结,现在的你掌握了嘛?

    简述类目category优点和缺点 优点: 不需要通过增加子类而增加现有类的行为(方法),且类目中的方法与原始类方法基本没有区别; 通过类目可以将庞大一个类的方法进行划分,从而便于代码的日后的维护、更新以及提高代码的阅读性...比如说,外部传一个模型过来,那么我会直接重写Setter方法,当模型传过来时,也就是意味着数据发生了变化,那么视图也需要更新显示,则在赋值新模型的同时也去刷新UI。...如一个TableView中有10个单元格,但屏幕最多显示4个,实际上iPhone只为其分配4个单元格的内存,没有分配10个,当滚动单元格时,屏幕内显示的单元格重复使用这4个内存。...线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。...先让A修改,然后提交到服务器,然后B更新下来,再进行修改; 2.服务器上的项目文件Xcodeproj,仅让一个人管理提交,其他人只更新,防止文件发生冲突。

    1.2K20

    iOS面试题梳理(三)

    比如说,外部传一个模型过来,那么我会 直接重写Setter方法,当模型传过来时,也就是意味着数据发生了变化,那么视图也需要更新显示,则在赋值新模型的同时也去刷新UI。...如一个TableView中有10个单元格,但屏幕最多显示4个,实际上iPhone只为其分配4个单元格的内存,没有分配10个,当滚动单元格时,屏幕内显示的单元格重复使用这4个内存。...线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。...先让A修改,然后提交到服务器,然后B更新下来,再进行修改; 2.服务器上的项目文件Xcodeproj,仅让一个人管理提交,其他人只更新,防止文件发生冲突。...并给出三个不同的例子: 一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。

    1.4K71

    问题——持续更新

    通过指针调用函数: 指针名 = &函数名 (这是给函数指针赋值)  拷贝、加括号、换名、加星号 __block关键字  在block中要使用零时变量 block传值  反向传值 适配中分页控件和滚动视图相结合...  解决:一个是看偏移,一个是看当前页 2.获取当前屏幕的大小CGRect frame = [UIScreen mainScreen].applicationFrame 解决横屏适配的问题: 解决...计算时间差的时候出现负数符号?  解决:调用方法时两个参数传的有问题,可能是反了,以至于出现了负数。...(之前的做法都是创建一个空的工程)     解决:将ViewController头文件导入到AppDelegate中,按照以前的写法,创建控制器的对象,再创建导航控制器的对象,并将其作为当前窗口的根视图控制器...Post 用系统自带的和第三方库的区别   请求体???     答:系统中的请求体是一个拼接起来的字符串,第三方AF中的参数是一个字典. 如何查看即将输出的数据的数据类型?

    1.3K20

    iOS 面试策略之经验之谈-架构的选择

    这是本系列最后一个章节,主要是一些进阶内容的提问和解答,考察的是开发者功力的深厚 [1240] 之前说一个 iOS 开发者成长到一定阶段,就会遇到瓶颈,解决的方法是熟悉设计模式。...ViewController 因为将两部分高度耦合,它将处理交互、视图更新、布局、Model 数据获取和修改、导航等几乎所有操作。 难以进行测试。...但理论上来说,MVC 是希望视图层就是单纯的 UIView,或者 UIViewController 只负责 UI 更新交互,不涉及业务逻辑和模型更新。...MVC 的中间层 Controller 持有视图和模型,主要起到一个组装和连接的作用,通过传递参数和实例变量来直接完成所有操作。...MVC,MVP,MVVM 这三种结构都是以视图为驱动的架构,三种皆为用户交互和视图更新为主要服务目标。它们一个共同的缺点是没有涉及界面之间的跳转——即路由的设计。 7.

    1K30

    iOS对UIViewController生命周期和属性方法的解析

    ,这里面有一点需要我们注意,如果我们需要向controller中视图进行传值设置,通过以下方法得到的Controller中,视图还没有被初始化创建出来:  ViewController2 * viewController2..."]; 我们可以在ViewController2的storyBoard中拉一个label,然后关联到头文件中,如下打印,会发现我们得到controller时,里面的视图对象并没有进行创建: ViewController2...1、ViewController直接在StoryBoard中进行跳转的传值         在StoryBoard中进行界面跳转是十分方便的,我们在StoryBoard中拉入两个ViewController...,在一个上面添加一个按钮,点住按钮按住control,将鼠标拉到第二个controller上,会出现如下的跳转选项: ?...我们可以把它连接到viewController2中的一个按钮上: ? 这样,当我们点击viewController2中的按钮时,就会返回到我们第一个ViewController1中了。

    3K20

    一道高级iOS面试题(runtime方向)

    问题1:print 是实例方法,但是并没有哪里调用了 [MNPerson alloc]init] ?? 问题2: 为啥打印了 viewController?...image-20190320211003867 person变量的指针,执行 MNPerson 实例对象 实例对象的本身是个结构体,之前指向他,等价于执行结构体的第一个成员 结构体的第一个成员是isa,...] 调用print 方法,不需要关心有没有成员变量 _name,所以可以理解为,cls == isa 函数调用,是通过查找isa,其实本质,是查找结构体的前八个字节; 前八个字节正好是isa,所以这里可以理解为...image-20190320214534204 _name的本质,先找到 isa,然后跳过 isa 的八个字节,就找到 _name这个变量 所以上图输出 self.name = 666 最早没有 test...(temp, @selector(ViewDidLoad)) 所以等于有个局部变量 - 结构体 temp, 结构体的地址 = 他的第一个成员,这里的第一个成员是self ?

    61130

    浅谈MVC

    因为之前是搞.net开发了,有过四年asp.net开发经验,虽然说不上钻得有多深,但基本各个方面也都接触到了。之前也把MVC往asp.net开发上靠过,试着去解耦各层的依赖,但是终究扯不清楚。...但是对于一个后台处理逻辑比较复杂的程序而言,其实以上三部分也只是这个系统中的一部分——前台展示与较浅层次业务逻辑处理部分,但是后台数据处理部分没有涉及到,这也是困惑了我近两年的一个疑问,与传统的三层架构设计...,但是在实际开发中,还是发现有不少问题需要注意,例如最近遇到的一个问题就是:有一个较复杂界面,需要根据上半部分子视图中日期的变化,动态更新中部表视图数据,界面支持日期一栏左右滑动,以切换日期,日期切换后需要同步更新表视图数据...;另外界面底部还有命令按钮视图,支持表数据提交操作; 一开始笔者将这个界面进行了分拆,分为四个View来实现,且每个View对应自己的ViewController:顶部一个是导航NavView,一个日期切换...一旦这样设计,数据交换逻辑就简单多了,可以将所有网络请求都在一个ViewController中集中处理,各个子视图只管各自子控件的布局、显示。

    95020
    领券