在视图控制器之间传递/共享数据有多少种方式

2023-11-22

我对 IOS 和 Objective-C 以及整个 MVC 范例很陌生,并且我坚持以下内容。

我正在开发(副本)联系人应用程序,也可以在 iPhone 中作为内置应用程序使用。我想通过另一个视图控制器传递数据,并且数据是 pass (null) :(。

我的问题是,如何将数据从一个视图传输到另一个视图?


正如您得到的大多数答案一样,在一个控制器和另一个控制器之间传递数据只是意味着将一个变量从一个控制器分配给另一个控制器。 如果您有一个控制器用于列出联系人,另一个控制器用于显示联系人详细信息,并且流程从列表开始并在选择联系人后转到详细信息,则可以分配联系人变量(可能是数组中的一个对象,该对象是显示在您的列表中)并在显示此之前将其分配给详细视图控制器。

- (void)goToDetailViewControllerForContact:(Contact *)c
{
    ContactDetailViewController *detailVC = [[[ContactDetailViewController alloc] init] autorelease];
    detailVC.contact = c;
    [self.navigationController pushViewController:c animated:YES];
    //[self presentModalViewController:detailVC animated:YES]; //in case you don't have a navigation controller
}

另一方面,如果您想将新联系人从详细信息控制器插入到列表控制器,我想最好的方法是将列表控制器作为委托分配给详细信息控制器,因此当添加联系人时,委托收到通知并按预期行事(将联系人插入数组并重新加载表视图?)。

@protocol ContactDelegate <NSObject>
- (void)contactWasCreated:(Contact *)c;
// - (void)contactWasDeleted:(Contact *)c; //may be useful too...
@end

@interface ContactListViewController : UIViewController <ContactDelegate>
@property (nonatomic, retain) NSArray *contacts;
...
@end

@implementation ContactListViewController
@synthesize contacts;
...

- (void)goToDetailViewControllerForContact:(Contact *)c
{
    ContactDetailViewController *detailVC = [[[ContactDetailViewController alloc] init] autorelease];
    detailVC.contact = c;
    detailVC.delegate = self;
    [self.navigationController pushViewController:c animated:YES];
    //[self presentModalViewController:detailVC animated:YES]; //in case you don't have a navigation controller
    }

- (void)contactWasCreated:(Contact *)c
{
    self.contacts = [self.contacts arrayByAddingObject:c]; //I'm not sure this is the correct method signature...
    [self reloadContacts]; //may be [self.tableView reloadData];

}

...
@end


@interface ContactDetailViewController : UIViewController

@property (nonatomic, assign) id<ContactDelegate> delegate;
...
@end


@implementation ContactDetailViewController
@synthesize delegate; //remember to don't release it on dealloc as it is an assigned property
...

- (void)createContactAction
{
    Contact *c = [[[Contact alloc] init] autorelease];
    [c configure];
    [self.delegate contactWasCreated:c];
}

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

在视图控制器之间传递/共享数据有多少种方式 的相关文章

  • iPhone SDK - 在后台线程中运行重复进程

    我有一个iPhone我想在其中每隔一段时间在后台执行一个方法的应用程序1第二 所以在我的主线程中 我有以下代码UIViewController viewDidLoad NSTimer timerWithTimeInterval 1 0 ta
  • Monotouch 和本机 iOS 代码

    是否可以将使用 monotouch 编译的 C 库与单个应用程序中的 Objective C 前端链接起来 或者该应用程序必须是全部还是全无 这是可能的 但您不会从 MonoTouch 工具获得任何帮助 并且您无法摆脱这样一个事实 您仍然需
  • Objective-c中的贝塞尔曲线算法

    比我聪明的人可以看一下这个吗 我正在尝试实现我发现的贝塞尔曲线算法here http webtweakers com swag GRAPHICS 0074 PAS html在 Objective c 中 输出是错误的 我想我正确地转换了代码
  • Xcode MyProjectName-Bridging-Header.h 不存在

    我想开始在我的 Objective C 项目中使用 Swift 所以我添加了一个快速类 import Foundation objc class System NSObject objc func printSome println Pri
  • 蓝牙 4.0 与较旧的蓝牙

    我正在尝试使用蓝牙 4 0 模块实现一个应用程序 我想知道将此应用程序与包含简单蓝牙 2 1 EDR 模块的 Iphone 3GS 一起使用是否能让我利用 4 0 模块中的低功耗 谢谢您的回答 蓝牙 4 0 是标准 其中包括经典蓝牙基本速率
  • Xcode:如何使用具有跨项目引用的单独项目在应用程序中嵌入框架?

    我使用的是 Xcode 4 3 我有一个用于嵌入式 Mac OS X 框架的现有 Xcode 项目 最初在 Xcode 3 中创建 该项目有几个目标 但该项目中的主要目标是我的框架 该框架设计为嵌入 Mac Apps 中 并设置了适当的安装
  • 获取 Cocoa 中文件的类型

    我成功找到了指定文件的扩展文件类型 JPEG 图像 TIFF 图像等 但我正在寻找更通用的东西 可以对 大类别 中的文件进行分类 如图像 moovies 文本文件等 有没有办法在可可 或 Objective C 中实现这一点 感谢您的帮助
  • XCode 调试 - 我可以绕过反汇编代码的单步执行吗

    调试项目时 在 XCode 中设置断点后 我将开始单步执行代码 然后我会遇到反汇编代码 我认为这些代码是对没有可用源代码的各种框架的调用 这是一个正确的假设吗 有没有一种方法 可能通过我尚未找到的项目设置 来抑制此汇编代码的显示 而不必单步
  • 检测 UITableView 中的水平平移

    我正在使用 UIPanGestureRecognizer 来识别 UITableView 中的水平滑动 准确地说是在单元格上 尽管它已添加到表格本身 然而 这个手势识别器显然窃取了桌子上的触摸 我已经让 pangesturerecogniz
  • CocoaPods 生成无效的项目文件(未找到标头)

    我有一个带有 Podfile 的项目文件 如下所示 platform ios 7 0 def import pods pod Specta 0 1 8 pod Expecta 0 2 1 pod RestKit 0 20 3 pod Mag
  • ObjC <-> Swift 桥接和工厂方法

    我想从 Swift 使用一些 Objective C 类 由于超出了这个问题范围的原因 我的班级init方法被标记为不可用 相反 有一个工厂方法 这是我的班级的简化形式 interface MyClass NSObject instance
  • 如何检查 Xcode 使用的 LLVM 编译器版本?

    我在 OS X 10 8 2 上使用 Xcode 4 5 2 我如何知道 Xcode 使用的是哪个版本的 LLVM 编译器 从命令行 07 40 35 andrew iMac SalesIQ siq 303 llvm gcc v Using
  • 将第 3 方库添加到 iPhone 应用程序时如何设置“标题搜索路径”的路径

    我想添加第 3 方库语音转文本 https github com todoroo iPhone Speech To Textto my Xcode项目 我只是拖xcodeproj文件在我的 iPhone 项目中 然后我按照目标依赖项 将二进
  • AVAssetExportSession 输出文件

    AVAssetExportSession 输出文件应该是什么样子 我正在尝试压缩 ALAsset 项目中的视频 但它不起作用 我猜输出文件与它有关 这是我正在使用的代码 NSString destinationPath NSHomeDire
  • OpenGL ES 1.1 顶点缓冲区对象不工作

    我正在使用 OpenGL ES 1 1 开发一款 iPhone 游戏 需要使用顶点缓冲区对象来渲染 500 多个粒子而不降低性能 我的游戏能够使用非 VBO 方法成功绘制 但现在我尝试合并 VBO 却不再绘制任何内容 请帮助我找出我做错了什
  • 如何将 Cocoa 应用程序移植到 iPhone-OS?

    我即将创建一个 Cocoa 应用程序 我想确保有一天我可以轻松地将它移植到 iPad 甚至 iPhone 我该如何提前计划 我知道我将不得不重做所有 NIB 并可能设计一个不同的工作流程 但是代码呢 仅仅用 UIsomething 替换每个
  • 将子视图发送到后面

    我正在尝试模仿 facebook ios 侧面菜单并让它工作 但是我遇到的问题是我无法将侧面菜单发送到后面 正如另一个问题中所讨论的那样使用 Objective C 的 iphone facebook 侧边菜单 https stackove
  • 后台模式下的 AVSpeechSynthesizer

    我无法获取 iOS 7AVSpeechSynthesizer当我的 iOS 应用程序处于后台模式时工作 我添加了 应用程序播放音频 应用程序支持的后台模式的关键 但我仍然无法让它工作 我还研究了创建一个AVMutableCompositio
  • UITableViewController 无法识别的选择器发送到实例

    当我传递一个整数时 我有一个 tableviewcontroller 和一个detailtableviewcontroller UITableViewController setSurveyNumber 无法识别的选择器发送到实例 Biza
  • 将我的免费应用程序从 Universal 升级到仅限 iPhone

    我释放我的free app到 appStore 它的版本是 1 0 它是一个Universal app 现在我想发布 1 1 版本到 appStore 我将其升级到iPhone only appStore会拒绝我吗 我已阅读类似的问题 ht

随机推荐

  • 从 std::map 值获取键的有效方法

    我有一张地图如下 std map lt std string int gt mapobj mapobj one 1 mapobj two 2 mapobj three 3 当输入是值时如何获取键 EX 输入 1 输出 一 注意 在我的例子中
  • 如何存储执行函数的结果并在以后重复使用?

    例如 我有 def readDb Fetch a lot of data from db spends a lot time return aList def calculation x readdb Process x return y
  • C#:对象的内存使用情况

    有没有办法找到特定对象使用了多少内存 例如一个列表 考虑到一切 比如字符串驻留以及编译器 运行时环境 其他所做的任何事情 ANTS 内存分析器分析 NET 代码的内存消耗 我过去用它取得了很好的成果
  • 我们可以在JQuery中执行SQL查询吗

    我们可以在 jQuery 回调函数和杂项中执行 mySQL 查询吗 功能 就像简单的查询 UPDATE EMPLOYEE SET PAY PAY 500 WHERE E ID 32 虽然您可以使用服务器端脚本的回调来执行对 MySQL 的查
  • 如何创建内存中文件对象

    我想制作一个内存文件以在 pygame 混合器中使用 我的意思是像http www pygame org docs ref music html pygame mixer music load这表示 load 方法支持文件对象 import
  • fullcalendar动态添加事件

    我正在尝试在我的完整日历中动态创建事件 I have calendar fullCalendar viewRender function view var h if view name month h NaN else h 2500 hig
  • 将数组映射变量替换为实际变量名称/字符串?

    我正在尝试编辑 Greasemonkey jQuery 脚本 我无法在这里发布链接 代码经过 minify 混淆和压缩 它是这样开始的 var 0x21e9 x67 x65 x74 x4D x6F x6E x74 x68 x67 x65 x
  • Python中使用random时是否需要调用seed()? [复制]

    这个问题在这里已经有答案了 我正在查看以下代码 from random import choice for val in range 10 a join str choice range 20 for idx in range 4 prin
  • Three.js补间camera.lookat

    我尝试使用 Tween js 在 Three js 中补间camera lookAt 但收效甚微 这有效 selectedHotspot object var tween new TWEEN Tween camera lookAt obje
  • 在C++中如何检查字符串是否可以转换为double?

    我有一个字符串 它可以是数字 甚至是浮点数或双精度类型 而不仅仅是整数 它也可以是非数字的单词 我想检查这个字符串是否可以转换为双精度 如果可以 那么我想进行转换 对于非数字字符串 我想要不同的行为 我已经尝试过这个 double tmp
  • 将文本文件读入数组

    我对编程真的很陌生 在为夏季项目认真思考了一周之后 我真的很感谢一些帮助 我正在尝试读取一个长文本文件 它只是一个长字符串 注意 不是实际的编程字符串 字母 然后将每个字母放入网格中的位置 该程序的目的最终是为了解决单词搜索 到目前为止 我
  • 使用 JavaScript 编写 xml 的库

    我正在使用 JavaScript node js 进行一些服务器端编码 并且我想编写有效的 xml 我找到了两个库 但我确信还有更多 更好 http goessner net download prj jsonxml LGPL 尚未公布 h
  • 如何从基本控制器获取操作名称?

    我想在我的一个控制器上实现一个基本控制器 在该基本控制器中 我希望能够获取当前执行的 ActionResult 名称 我该怎么做呢 public class HomeController ControllerBase public Acti
  • collections.Counter:most_common 包括相等计数

    In collections Counter 方法most common n 仅返回列表中 n 个最频繁出现的项目 我正是需要这个 但我也需要包括相等的计数 from collections import Counter test Coun
  • 如何以编程方式访问剪贴板数据?

    如何以编程方式访问 Mac 上的剪贴板数据 苹果有一个粘贴板编程指南您正在寻找的主要课程是NSP纸板 读取字符串的示例是 NSPasteboard pasteboard lt Get a pasteboard gt NSArray clas
  • JSF 如何从支持 bean 重定向到在支持 bean 中动态构造的 URL?

    有希望通过一个例子来说明这个问题 我的页面上显示了 10 个文档 其中 3 个在 zip 包内包含附加信息 在初始页面加载期间 我只知道哪些文档具有此附加信息 我知道not知道这些 zip 文件的 URL 然后 我显示指向包含其他 zip
  • 签出提交而不更新 HEAD

    我需要将工作目录和索引更新为某些提交的状态 当我跑步时git checkoutGit 更新HEAD index and a working directory 我知道我可以从提交中签出单个文件而无需更新HEAD只需指定文件的路径即可 但是对
  • numpy packbits 打包到 uint16 数组

    我有一个 3D numpy 位数组 我需要沿着第三轴打包它们 这正是 numpy packbits 所做的 但不幸的是它只将其打包为 uint8 但我需要更多数据 是否有类似的方法将其打包为 uint16 或 uint32 根据您机器的字节
  • 如何在主干中指定 url 和 header 以在我的模型上使用 crud 方法?

    我需要在需要特定 api 密钥的服务器上发出请求 并且我需要使用 crud 方法来更新我的模型 并且尽快 例如 我在 ajax 中有以下代码来从服务器获取元素 function getapi ajax url https api parse
  • 在视图控制器之间传递/共享数据有多少种方式

    我对 IOS 和 Objective C 以及整个 MVC 范例很陌生 并且我坚持以下内容 我正在开发 副本 联系人应用程序 也可以在 iPhone 中作为内置应用程序使用 我想通过另一个视图控制器传递数据 并且数据是 pass null