需要使用Objective C将值从B Viewcontroller传递给ViewController吗?

时间:2016-01-05 04:51:41

标签: ios objective-c iphone uiviewcontroller

我正在努力调用从<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <input type="button" class="btn" name="btn1" value="1" onclick="btnClick(this);"> <input type="button" class="btn" name="btn2" value="2" onclick="btnClick(this);"> <input type="button" class="btn" name="btn3" value="3" onclick="btnClick(this);"> <input type="button" class="btn" name="btn4" value="4" onclick="btnClick(this);"> <input type="button" class="btn" name="btn5" value="5" onclick="btnClick(this);">viewController B的方法。需要拨打viewController A关闭按钮点击viewController B,然后立即调用一个方法,并希望在Dismissviewcontroller上传递两个字符串值。它就像逆过程一样。

仅供参考:我正在使用viewController A并为B.呈现viewController .A是Storyboard

4 个答案:

答案 0 :(得分:0)

  • 在控制器viewWillAppear中使用A

  • 从控制器B发布通知并添加 控制器A上的观察者。

在控制器B关闭按钮上发布通知 [[NSNotificationCenter defaultCenter] postNotificationName:"NAME" object:nil userInfo:nil];

在控制器A上添加观察者:

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

  • 实施代表 控制器B并在控制器A上实现它,所以一旦你点击 在关闭按钮控制器B上,只需调用代理并执行您想要的任何操作。
  • 实施KVO

答案 1 :(得分:0)

传递值有很多选项

  1. 使用协议和代理
  2. 使用展开segues
  3. 使用通知
  4. 还有很多其他选项可以在上面的点上做同样的谷歌,你将获得大量的演示。

答案 2 :(得分:0)

最简单的方法,但不是最有效的方法是使viewController AviewController A视图的全局对象执行加载方法 称之为全局变量并使其等于self和 然后是viewController B

的解雇

将使用

[self dismissViewControllerAnimated:YES completion:^{


  // here you can create a code for calling the global **viewController A** object to call the function you need

}];

结论:

<{1>}头文件中的

viewController A

并在extern A* AGlobalInstance;

下面的A.m文件中
#import "A.h"

A* AGlobalInstance;

viewDidLoad

然后在B.m按钮中使用

- (void)viewDidLoad {
  [super viewDidLoad];
  AGlobalInstance = self;
}

但是你必须先去一个viewController然后再去B才能使它工作

答案 3 :(得分:0)

由于上述答案建议您使用代表和通知,所以我不会建议您这些。除了他们,我想请你去Block

typedef void(^valueHandler)(id anyObject1, id anyObject2);

@viewController A

B *instanceOfB;
[instanceOfB setValueHandlerBlock^(id anyObject1, id anyObject2) {
// Here you can receive the values.
}];

@viewController B

@property (nonatomic, copy) valueHandler valueHandlerBlock;

//To pass the value
if (valueHandlerBlock) {
    valueHandlerBlock(@"a String value", anArray);
    // When ever the above line will execute it will pass the values to view controller A.
}