如何在 iOS SDK 中使用 presentViewController 在视图控制器之间传递变量?

Posted

技术标签:

【中文标题】如何在 iOS SDK 中使用 presentViewController 在视图控制器之间传递变量?【英文标题】:How to pass variables between view controller using presentViewController in iOS SDK? 【发布时间】:2014-03-09 13:30:28 【问题描述】:

几天前,我写了一个使用 presentViewController 加载视图控制器的方法:

-(void)passaGC:(NSString *)user

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UIViewController *viewController = (UIViewController *)[storyboard instantiateViewControllerWithIdentifier:@"generaC"];
[self presentViewController:viewController animated:YES completion:nil];


但是今天我需要将变量 user 从这个方法传递给加载的 viewController。

如何修改我的方法来做到这一点?

我发现了关于堆栈溢出的其他问题,但没有什么与我的请求真正相似

【问题讨论】:

Passing Data between View Controllers 的可能重复项 实际上有很多关于这个的问题和答案。 我明白,但有人可以帮我修改我的方法吗?谢谢 您需要做的不仅仅是修改方法。我链接到的答案 (***.com/questions/5210535/…) 提供了“向前传递数据”的分步说明。 【参考方案1】:

将属性添加到目标视图控制器(在 .h 中):

@property (strong, nonatomic) NSString *user;

最后你的方法看起来像

-(void)passaGC:(NSString *)user

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UIViewController *viewController = (UIViewController *)[storyboard instantiateViewControllerWithIdentifier:@"generaC"];

viewController.user = user;

[self presentViewController:viewController animated:YES completion:nil];


【讨论】:

谢谢,但是如何解析/获取参数值。【参考方案2】:

迅捷解决方案

除了 @IBOutlets,您可以简单地将数据分配给目标视图控制器属性。

DestinationVC.swift

var name: String?

SourceVC.swift

let storyboard = UIStoryboard(name: "Helper", bundle: nil)
let destinationVC = storyboard.instantiateViewControllerWithIdentifier("DestinationSID") as! DestinationVC
destinationVC.name = "Mustafa"
presentViewController(destinationVC, animated: true, completion: nil)

【讨论】:

以上是关于如何在 iOS SDK 中使用 presentViewController 在视图控制器之间传递变量?的主要内容,如果未能解决你的问题,请参考以下文章

在 + UIDocumentInteractionController 中打开:如何在 SDK iOS 6 中过滤选项(不推荐使用 canPerformActions)

在 iPhone 应用程序中,如何将照片发布到 Facebook 粉丝页面。在它之前如何喜欢它?使用 facebook-ios-sdk

如何使用iOS SDK在FB中获取用户的所有朋友

如何在 Objective-C 中使用继承(iOS sdk)

如何在 iOS 10 上使用 Facebook iOS SDK

如何在 IOS 中使用最新的 facebook sdk 在朋友墙上发布文字