【问题标题】:Xcode get text of textfield from a different classXcode 从不同的类中获取文本字段的文本
【发布时间】:2014-07-28 21:59:12
【问题描述】:

我是 xcode 和 Objective-c 方面的初学者,我目前正在构建一个读取 xml 文件并将它们的值与文本字段值进行比较的应用程序。

我有 2 节课。第一个是我的文本字段所在的视图控制器。第二个类是我遍历我的 xml 文件的地方。

我只是希望能够访问我的 XML 迭代器类的文本字段的文本。 重要的是,我可以将在文本字段中输入的文本保存为我的迭代器类中的变量。

我试图做这样的事情,但没有成功:

ViewController *viewcontroller = [[ViewController alloc]   initWithNibName:@"ViewController" bundle:nil];

viewcontroller.string = self.myTextField.text;

非常感谢您的帮助,因为我已经为此困扰了很长时间。

【问题讨论】:

  • 研究使用单例。谷歌搜索可以找到许多示例。
  • 你应该检查this问题和答案。
  • 所以第二个类,它遍历 XML 文件,也是派生自 UIViewController?
  • @mohacs 我不认为委托是实现这一点的正确方法——它很可能会起作用,但从代码结构的角度来看,更简洁的方法是坚持 MVC 模式。有关详细信息,请参阅下面的答案。
  • @RinatKhanov 同意,​​站出来纠正。在这种情况下,单例类将是比使用协议更好的解决方案。

标签: ios objective-c xcode


【解决方案1】:

让我们回到 MVC 模式(代表模型-视图-控制器)的基础——您的 视图控制器 直接与您的 视图模型 (或任何帮助程序,如我们案例中的 XML 迭代器)。所以最有可能的正确方法是直接在 ViewController 的实现中提供 XML 迭代器文本值,并在每次文本字段的值更改时更新/重置 XML 迭代器。

实现这一点的一种方法是在ViewController 类中为您的XML 迭代器添加一个强大的@property(创建一次XML 迭代器实例,然后分配给该属性并稍后使用它)。另一种常见的方法是将您的 XML 迭代器实现为单例类。

在您的具体情况下,很难判断哪个选项更好(例如,您也可以使用协议甚至通知)。但是,上述这种面向 MVC 的通用方法适用于大多数基本情况。更多信息,请阅读模型-视图-控制器模式——Apple Documentation 是正确的起点。

【讨论】:

  • MVC与这个问题无关。
  • @user523234 确实如此,因为它概述了这些视图和控制器如何相互了解和交流
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-31
  • 2021-08-17
  • 2018-10-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多