segue:目标视图控制器的怪异

2024-01-28

在我的应用程序中,我使用故事板和转场,并且经常在执行转场之前将数据传递到目标视图控制器,如下所示:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{
    if ([segue.destinationViewController respondsToSelector:@selector(setMyData:)]) {
        [segue.destinationViewController performSelector:@selector(setMyData:) 
                                          withObject:myData];
    }
} 

除一处外,它在任何地方都有效。选择器被调用,数据被设置,但是当segue完成并且目标控制器出现时,它没有我刚刚设置的数据。在源视图控制器和目标视图控制器中打印视图控制器的 id 后,我发现segue.destinationViewController上面的代码中的视图控制器实例与显示的实例不同。这里发生了什么?

[更新1]我研究了目标视图控制器的生命周期,它首先在 segue 执行期间加载,但在我设置它的属性之后!这意味着,当我打电话时performSelector就其而言,视图控制器对象未初始化!这就是为什么我设置的数据不粘的原因。我不明白为什么会出现这种情况,以及为什么同样的方法适用于我的应用程序的其他部分。

[更新2]发布代码setMyData按要求。一开始我根本没有这个方法,因为locationToOpen是公共财产。我添加它只是为了确保它被调用并打印调试信息。

- (void)setMyData:(MyData *)myData
{
    DLog(@"self: %@", (id)self);
    _myData = myData;
}

我会这样做 -

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{
    if ([segue.identifier isEqualToString:@"NextSegue"]) 
    {
        DestinationViewController *dest = [segue destinationViewController];

        dest.myData = self.myData; 
    }
}

在 DestinationViewController.h 中,您应该创建一个属性 -

#import <UIKit/UIKit.h>

@interface DestinationViewController : UIViewController

@property (nonatomic, strong) NSObject *myData;


@end

另外,请确保在 DestinationViewController.m 中综合 myData 属性 -

@interface DestinationViewController ()

@end

@implementation DestinationViewController

@synthesize myData = _myData;

// other methods here

@end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

segue:目标视图控制器的怪异 的相关文章

随机推荐

  • 以另一个用户身份运行任务

    使用卡皮斯特拉诺v3 我怎样才能跑all远程任务通过su作为另一个用户 我在官方文档中找不到任何内容 http capistranorb com http capistranorb com 对于我的用例 每个虚拟主机都有一个 SSH 用户和
  • 创建事件观察者以获得焦点?

    原型中是否可以有焦点事件冒泡 我试图避免在每个输入元素上分配一个观察者
  • python和node base64解码的区别

    我对这个base64解码问题感到困惑 似乎python和node js的做法不同 我相信 Node 正确地做到了这一点 有人能帮忙指出为什么 python 在这里不起作用吗 谢谢 Node gt console log Buffer fro
  • 构建进度条而不启动新线程

    我需要在 a 中添加一个进度条JFrame但我想更新这个栏而不生成新线程 例如摇摆工人后台更新栏 有没有办法更新当前线程 主 JFrame 的当前线程 中的进度条 详细信息 我有第一类 ChooseGUI 它扩展 JFrame 并调用第二类
  • MongoDB 全文搜索 + 部分单词匹配的解决方法

    由于使用 mongodb 全文搜索无法通过 blue 一词找到 blueberry 因此我想帮助我的用户将 blue 一词补全为 blueberry 为此 是否可以查询 mongodb 全文索引中的所有单词 gt 我可以使用这些单词作为建议
  • 如何使用 Requests 从 Github 下载并写入文件

    假设 github 存储库中有一个文件 https github com someguy brilliant blob master somefile txt https github com someguy brilliant blob
  • 完全禁用 Backbone.js 哈希,但将 PushState 保留在历史记录中?

    我想使用 Backbone 出色的路由系统 但我不想为旧版浏览器提供任何形式的哈希支持 使用时是否可以完全禁用哈希pushState in Backbone History 它没有记录在backbone js 页面上 但我在带注释的源代码中
  • 离子文件下载不起作用

    我正在构建一个用于壁纸的离子应用程序 在应用程序中 显示了存储在 www assets img 中的图像 我在下面构建了 2 个按钮 用于将显示的图像下载和检索到移动设备内存 当我单击下载按钮时 会显示一个对话框 显示 下载成功 Pug j
  • 构建过程中出现“找不到类型或命名空间名称”错误

    我正在 C Windows 应用程序中使用 我已经使用 TempProWin gt 对于 Windows 应用程序项目TempProApp gt 用于数据库和使用 CSLA 方法的类文件等功能 在 TempProWin frmLogin c
  • TCP/IP IOCP 接收到的数据有时会损坏 - Windows 上的 Visual C++

    我正在编写一个简单的测试 ICOP 客户端和服务器 以确保我正确使用 API 并且服务器正确接收客户端发送的数据 我已经包含了这个问题的所有代码 这就是我遇到一些问题的地方 接收缓冲区内的数据有时似乎已损坏 损坏是因为有时缓冲区内的数据块可
  • Java 二十一点摇摆 gui ImageIcon

    我一周前刚刚开始学习 Java 并完成了我的第一个二十一点程序 我想通过使用 Java swing ImageIcon 来增强它 以便每次我抽一张牌 比如说一张 A 时 它实际上都会将 A 作为图像显示在屏幕或我当前的手牌上 我编写了这个程
  • Github 上的 Mocha 并行作业 Actions

    我刚刚切换到 Mocha 中的并行测试 效果很好 但是 当我在 github 上运行它时 它似乎没有并行运行 为了让 Mocha 在 Github Actions 上并行运行 我需要配置什么 mocharc json Mocha 9 x t
  • 下拉列表到组合框

    我正在寻找一个简单的控件或 jQuery 插件 将 DropDownList 转换为 ComboBox 我目前正在使用 Ajax Combo Box 我已经受够了 我试图使组合框的宽度为 100 但当从列表中选择一个项目时 组合框的大小调整
  • Android 上可以处理不规则形状上的事件吗?

    据我目前所知 了解很少 Android 中的所有视图都是正方形或矩形 这几乎一直都很好 直到您想要 我真正想要的 创建可以处理事件的非方形形状 我的目标是将一个圆分为 3 个部分 每个部分 120 圆圈的每个部分都应该像一个按钮 问题是 如
  • Django 测试不会引发 CharField 的完整性错误

    如果有以下 Django 1 4 模型 from django db import models class SimpleModel models Model name models CharField max length 100 这个简
  • Rails - 表单字段之间出现换行符并出现错误

    我在尝试消除 Rails 似乎在有错误的字段之间插入的额外换行符时遇到了麻烦 我创建了一个新的 Rails 应用程序 创建了一个名为 用户 的脚手架 其中包含姓名和年龄 然后说validates name presence gt true
  • 如何创建一个包含字符串和对象哈希表条目的 JList?

    我想创建一个 JList 其中包含 String 和 object 的哈希表的条目 Hashtable
  • 通过正则表达式查找括号

    我不太擅长正则表达式 我正在查找字符串是否包含 注意 我并不是在寻找实际的 中的内容 只是看字符串中是否包含 或 我知道如果我执行 scan 它将获取任何匹配项并创建一个数组 我想要的 我只是不知道表达方式 使用非贪婪匹配的替代方案 没有那
  • 从 .NET 数据库中检索数据的最快方法?

    Using ADO NET http en wikipedia org wiki ADO NET 从数据库检索数据并将数据填充到我的业务对象中的最快方法是什么 我应该使用哪一个 DBDataReader DBDataAdapter 或任何其
  • segue:目标视图控制器的怪异

    在我的应用程序中 我使用故事板和转场 并且经常在执行转场之前将数据传递到目标视图控制器 如下所示 void prepareForSegue UIStoryboardSegue segue sender id sender if segue