如何与容器 View Controller 和父 View Controller 通信?我试图进行交流并在它们之间传递值。我在绿色 View Controller 中添加了一个容器 View 。我用“communicateSegue”设置了segue名称。我搜索了一些方法,我知道我们可以将 prepareForSegue 设置为在初始时传递值。
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"communicateSegue"]) {
NSLog(@"call prepare for segue at parent view controller");
}
}
但现在我想在不同的 viewcontroller 中传递值并更改标签。不是最初的。
我不知道怎么办?
问题:
有谁知道如何实现 ParentViewController 将值传递给 Container View Controller 并在 ContainerViewController 中显示标签?
反过来,容器 View Controller 单击按钮然后传递值并使用 objective-c 更改在 ParentViewController 中显示的标签?
谢谢。
我在 parentViewController.h 中声明变量: #导入
@interface ParentViewController : UIViewController
@property (weak, nonatomic) IBOutlet UITextField *parentTF;
@property (weak, nonatomic) IBOutlet UIButton *passValToChildVCBtn;
@property (weak, nonatomic) IBOutlet UILabel *showContainerValLB;
@property (weak, nonatomic) IBOutlet IBAction *passValueToContainerEvent;
@end
在ContainerChildViewController.h中 #导入
@interface ContainerChildViewController : UIViewController
@property (weak, nonatomic) IBOutlet UILabel *showParentValLB;
@property (weak, nonatomic) IBOutlet UITextField *childTF;
@property (weak, nonatomic) IBOutlet UIButton *passToParentBtn;
@property (weak, nonatomic) IBOutlet IBAction *passValueToParentBtnEvent;
@end
非常感谢。
最佳答案
关于将值传递给 containerView Controller ,您可以在 ChildViewController 中为您希望传递的值创建一个属性。然后在您的 ParentViewController 中执行如下操作:
self.ChildViewController.yourProperty = yourValue
相反的情况可以通过 4 种方式完成:
- 您可以制定委托(delegate)协议(protocol)在您的 Controller 之间传递数据。
- 您可以在 ChildViewController 中发布通知并将父 Controller 添加为观察者。
- 您可以使用 KVO。
最简单的方法是,您可以在 parentviewController 中创建一个属性并像下面这样访问它
((YourParentViewControllerClassType *)self.parentViewController).yourParentProperty = TheValueYouWant;
关于iOS Container View 和 Parent ViewController 通信?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28804486/