在子视图iOS中设置父视图的变量

时间:2014-07-18 23:57:29

标签: ios objective-c

viewA.h

@property (nonatomic, strong) NSString *foo;

viewB.m

viewAViewController *viewA = [[viewAViewController alloc] init];  
viewA.foo = @"str";

[self.navigationController popViewControllerAnimated:YES];

viewA中的变量永远不会改变。

我不知道如何从另一个视图设置视图变量,没有故事板或seque,以编程方式,然后弹回到它。

两个视图都是表视图,我想用viewB中的选定vaule填充viewA表格单元格细节。

由于

1 个答案:

答案 0 :(得分:0)

正确的方法是使用代表。

在B中定义一个委托,如下所示:

@protocol MyDelegate <NSObject>
- (void) updateData:(NSString*)str;
@end

还在B中添加一个成员变量,如下所示:

@property (nonatomic, weak) id<MyDelegate> selectionDelegate;

为我们的自定义委托创建一个委托代码:

@interface A : UIViewController <MyDelegate>

然后在该VC的.m文件中实现此功能

- (void) updateData:(NSString*)str{
    self.foo = str;
}

当为A的实例创建B时,您还需要初始化委托变量。

A.m

中的某个地方
B *b = [[B alloc]init];
b.selectionDelegate  = self;

现在在B中你可以调用[self.selectionDelegate updateData:string];无论何时你准备好了。 希望这有帮助