【问题标题】:(Beginner)Trying to pass an array from ViewController to DetailController(初学者)试图将数组从 ViewController 传递给 DetailController
【发布时间】:2012-04-04 15:30:50
【问题描述】:

我在 RootViewController 类中加载了一个数组 (recordArray),我需要将它传递给 DetailViewController 类,以便我可以访问其中的任何变量。我可以成功传递一个值,但我不知道如何传递整个数组。

我在 DetailsViewController.h 中创建了第二个 NSMutableArray recordArray,添加了 @property 语句(带有保留),并在 DetailsViewController.m 中合成。然后我在 DetailsViewController.m 中添加了以下行

recordArray = [[NSMutableArray alloc] initWithArray:self.recordArray];

但这只是在详细视图中给了我一个空数组。

我已经阅读了一些关于此的帖子,但没有找到任何我理解足以能够实施的内容。我想我会搞错这一切......

提前感谢你们的帮助。

【问题讨论】:

  • 你的细节视图控制器是如何呈现的,storyboard 还是 xib 文件?
  • 两个 ViewController 都是 xib 文件。

标签: objective-c xcode arrays


【解决方案1】:

请参考这段代码:

iPhone SDK: How do I pass an array of values from a ViewController onto other ViewController?

你可以参考Satya的回答。

如果您需要更多帮助,请告诉我

编辑:

让我们假设在SecondViewController 中声明了一个名为secondArray 的NSArray

在 SecondViewController 中定义一个方法:

-(void)setValue:(NSArray *)array
{
    secondArray = array;
}

希望这会有所帮助。

【讨论】:

  • 感谢帕思和@Oscar。 Satya 的帖子是我一直试图理解的。我遵循了他的建议,但是在构建时我收到一个警告,它找不到 setValue 方法。如 Satya 所述,我已将 setValue 方法添加到 DetailViewController,然后在 RootViewController 代码中将数组设置为 DetailViewController。
  • @user991542:很高兴!我可以帮你。 :)
  • @user991542:请参阅我回答的EDIT部分。
  • 你知道为什么第一个 ViewController 中的 setValue 调用无法响应第二个 ViewController 中的 setValue 方法吗?抱歉,只是我对 Objective-c 的缺乏经验让我失望了。
  • @user991542:没问题。我认为您需要在SecondViewController 中声明和定义-(void)setValue:(NSArray *)array 方法,正如我在上面我的答案的EDIT部分中提到的,请再次检查我的答案。
【解决方案2】:

问题出在这里:

recordArray = [[NSMutableArray alloc] initWithArray:self.recordArray];

您只是分配了相同的属性recordArray,此时可能是nil,您要做的是依赖注入。所以每当你实例化你的DetailController,你可以这样做:

myDetailController.recordArray = myRecordArray

其中myRecordArray 是您要在详细视图控制器中传递或“注入”的值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-01
    • 2013-06-16
    • 1970-01-01
    • 2018-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多