如何在 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
如何在 Objective-C 中使用继承(iOS sdk)