在视图控制器之间传递数据而不使用 segues [重复]

Posted

技术标签:

【中文标题】在视图控制器之间传递数据而不使用 segues [重复]【英文标题】:Passing data between view controllers without using segues [duplicate] 【发布时间】:2014-02-28 10:11:40 【问题描述】:

我遇到以下问题:

有两个视图控制器,viewController1viewController2

在 viewController1 中,在 viewDidLoad 中以编程方式创建了一个 UIButton、UITextField,并且按钮在按下时会查看 viewController2。

viewController2 出现时是否有办法从 viewController1 中的 UITextField 获取数据。

谢谢你..

【问题讨论】:

我遵循这个 SO 元答案,我认为您 (user3340000) 也应该:“Stack Overflow 用户需要做多少研究工作?” meta.stackexchange.com/questions/182266/… 我学到了很多关于堆栈溢出的知识,我非常感谢这个网站为我提供的帮助。但我担心这个可怜的用户在他的第一个问题上的待遇很差,他立即被疏远和贬低。把一个新人扔到骨头上就这么难吗? 【参考方案1】:

有一种方法(或多种方法)可以做任何事情:)

但是我怀疑在您的示例中将字符串从 viewController1 中的 textField 设置为一个属性或者您放置在那里(在 viewController2 中)的某个方法会简单得多,例如

-(void)prepareToPresentHereIsYourStringFromMyTextField:(NSString *)textFieldContent;

这会简单得多的原因是 viewController1 已经导入了 viewController2 的头文件,所以它会立即“看到”这个选择器并能够调用它,并且 viewController1 之前已经有一个指向 viewController2 的指针它被提出。它可以像你问的那样以相反的方式完成,viewController2从viewController1“获取”或“获取”这个字符串,但这会更复杂一点,viewController2需要了解viewController1的一些信息,无论它是否导入整个标题或者你实现一个小协议,它需要一个指向 viewController1 的指针才能调用..

【讨论】:

我没有投反对票,但我发现这是一个非常糟糕的答案。有很多文字可以解释将数据作为参数传递的简单功能。我见过的最长的方法名称,没有实际代码显示它正在完成 感谢@SimonMcLoughlin,您当然有权发表意见。大部分文本都在解释为什么在这种情况下设置比获取更简单。也许是基础。至于一个实现,我猜很公平,提问者想要一个来自 UITextField 的 NSString 在 presentingViewController 中,大概他对这个 NSString 有一些意图,这超出了问题的范围。我觉得有趣的是,你觉得我用了太多的文字来解释这样一个简单的数据传递功能,但另一方面你想要一个示例实现。

以上是关于在视图控制器之间传递数据而不使用 segues [重复]的主要内容,如果未能解决你的问题,请参考以下文章

通过 segue 在视图控制器之间传递数据

将数据从 TableViewController 传递到 XIB 文件而不使用 Segues-Swift 3

在视图控制器之间传递数据而没有 segues

在视图控制器之间传递 iOS 10 Segue 中的数据 [重复]

在视图控制器之间传递数据 - Storyboards segues

使用 segue 在 View Controller 之间传递变量