【问题标题】:Passing information from one view controller to another in XCode using Objective C使用 Objective C 在 XCode 中将信息从一个视图控制器传递到另一个视图控制器
【发布时间】:2023-04-08 07:37:02
【问题描述】:

为了将信息从一个视图控制器传递到另一个视图控制器,我一直使用整数。我在一个头文件中声明了这个整数,然后通过if-then语句在各种.m文件中设置这个整数的值。 (如果用户选择了某个选项,则将值设置为 1,在其他选项中,将值设置为 2。)基于整数的当前值,所有 .m 文件都应该知道用户选择了哪个选项并采取相应的行动。

这在 XCode 7 之前一直运行良好。现在我收到错误“架构 x86_64 的 18 个重复符号”,因为我在多个 .m 文件中使用了整数。

任何关于在视图控制器之间传递信息的替代方式的建议......或如何维护我当前的方法但摆脱错误......将不胜感激。

以下是部分代码: #进口 整数问题类型整数; 诠释 iPadInt; int 旋转; int iPhoneRotationInt; @interface QuestionTypeViewController ... 这是我的 .h 文件。然后在不同视图控制器的 .m 文件中: #import "QuestionTypeViewController.h"

接口留出空间

@implementation TermsAndPoliciesViewController
-(void)viewDidLoad
{
    [super viewDidLoad];
    if (iPadInt==0) {
        self.view=self.iPhoneTermsView;
    } else {
        if (rotationInt=90) {
            self.view=self.iPadLandscapeTermsView;
    } else     self.view=self.iPadPortraitTermsView;
    }

我将全局变量用于许多其他事情,但它们都给了我错误。

【问题讨论】:

  • 发布你的一些代码。
  • 谢谢,刚刚添加了一些。网站上的格式似乎不正确——抱歉。

标签: objective-c uiviewcontroller ios9 xcode7


【解决方案1】:

在这里猜测一下,因为我们没有您的代码。

听起来您只是创建了全局变量(不在类的@implementation 中)。

如果是这样,如果您希望它们不同并且在 .m 之外可用,它们需要具有不同的名称。如果你想让它们代表相同的东西,它们创建一个新的 .m 和 .h 并声明和定义一次。

【讨论】:

  • 感谢您的回答!澄清一下,我在以前的项目中成功地使用了全局变量,并且只是从那个成功的项目中复制并粘贴了大部分代码......但现在它不起作用了。
【解决方案2】:

在所有 UIViewController 中都有一个名为“prepareForSegue”的方法,这个方法可以让你将信息发送到下一个你要推送的视图控制器......

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

    UIViewController *viewControllerYouWantToMoveOn = segue.destinationViewController;
    viewControllerYouWantToMoveOn.info = self.info;
}

其中“信息”是携带传递数据的属性

根据苹果...

因为 segue 可以从多个来源触发,所以您可以使用 segue 和 sender 参数中的信息来消除应用中不同逻辑路径之间的歧义。例如,如果 segue 源自表格视图,则 sender 参数将标识用户点击的表格视图单元格。然后,您可以使用该信息在目标视图控制器上设置数据。

【讨论】:

    【解决方案3】:

    没有更多信息,我看到了两个简单的选项:

    1. 在您的应用委托上创建一个属性。这是不受欢迎的,如果可能的话,我会避免这种情况。但是……它会起作用的。

    2. 创建一个所有视图控制器都可以访问的单例类。因为它是一个单例,所以您的所有视图控制器(以及其他任何东西)都将只与一个实例进行交互。

    【讨论】:

      猜你喜欢
      • 2020-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多