【问题标题】:How to send the value of array to previous(one step back) ViewController [duplicate]如何将数组的值发送到前一个(后退一步)ViewController [重复]
【发布时间】:2013-01-31 11:09:55
【问题描述】:

可能重复:
iOS: Communicating to parent view controller

假设我有 2 个 viewController,分别名为 FirstViewController 和 SecondViewController

现在使用导航,我从 FirstViewController 转到 SecondViewController。

现在我在 SecondViewController 上有一个名为 resultArray 的数组

我想在 FirstViewController 上获取 resultArray 的值

那我如何获取 FirstView Controller 上的值呢?

有什么想法吗?

【问题讨论】:

标签: iphone objective-c uinavigationcontroller


【解决方案1】:

@Nishant B 的答案形式(以及其他后续答案)将起作用。

由于您使用的是 UINavigationController,并且您想退后一步访问控制器,您也可以在您的 SecondViewController 中执行此操作:

NSUInteger count = [[self navigationController].childViewControllers count];
FirstViewController* firstVC = [[self.navigationController childViewControllers] 
    objectAtIndex:count -2];
[firstVC setSomeValue:someValue];

【讨论】:

  • NSUInteger count = [[self navigationController].childViewControllers count]; DatesTableViewController *datesTable = [[self.navigationController childViewControllers] objectAtIndex:count -2]; [日期表 setTempArray:resultArray]; [self.navigationController popViewControllerAnimated:YES];
  • 我已经这样做了,但是我的 tempArray 给了我空值
  • 那么还有一个问题。尝试一些日志语句或使用调试器单步执行。
【解决方案2】:

您可以通过以下方式实现它:

在“FirstViewController”文件中:

1) 创建数组对象例如:arrTest;

2) 例如创建一个方法:

-(void)getArrayValue:(NSMutableArray *)pArr
{
     arrTest = pArr;
}

3) 推送前调用“SecondViewController”的方法:

[objSecondViewController setParent:self];\

现在,在“SecondViewController”文件中:

.h 文件:

@class FirstViewController;

在 .m 文件中:

#import "FirstViewController.h"

还有

1) 在.h文件中声明一个变量:

id parent;

2) 声明并创建一个方法“.h”和“.m”文件:

-(void)setParent:(id)pID
{
    parent=pID;
}

3) 当你想出数组时,调用如下方法:

[parent getArrayValue: <your_new_array>];

希望,你知道你想要什么。

编码愉快!

干杯!

【讨论】:

    【解决方案3】:

    你可以在这里做的是在你的第一个类中创建一个构造函数,例如

    -(void)initWithArrayOfSecondClass:(NSMutableArray *)arr_OfSecondClass;
    {
        arr_FirstClassArray = [[NSMutableArray alloc]initWithArray:arr_OfSecondClass];
    
    }
    

    从你的第二堂课发送这个数组:

    [objOfFirstClass initWithArrayOfSecondClass:resultArray];
    

    【讨论】:

      【解决方案4】:

      还有一种使用本地通知的方法。

      假设你想从 B 向 A 发送数据。

      当您按下一个按钮左右时,在 B 中执行以下操作:

      - (NSString *) saveAndExit
      {
          [[NSNotificationCenter defaultCenter] postNotificationName: @"AnswerValue" object: answerView.text];
          [self.navigationController popViewControllerAnimated:YES];
          return @"abc";
      }
      

      在 A 的 viewDidLoad 中,添加以下内容:

      [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(incomingNotification:) name:@"AnswerValue" object:nil];
      

      同时添加如下方法:

      - (void) incomingNotification:(NSNotification *)notification{
      NSString *result = [notification object];
      

      }

      两者的通知名称必须相同。在这种情况下,名称是 AnswerValue。这会将值“abc”从 B 发送到 A 并存储在 result 中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-13
        • 2023-03-31
        • 1970-01-01
        • 2021-06-06
        • 2017-11-14
        • 2016-04-20
        相关资源
        最近更新 更多