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表格单元格细节。
由于
答案 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];无论何时你准备好了。 希望这有帮助