如何与容器视图控制器和父视图控制器通信?我试图进行沟通,并在他们之间传递价值。我在绿色视图控制器中添加了一个容器视图。我用“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中显示标签?

反之,Container 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

test project in the here

非常感谢你。

最佳答案

关于将值传递到containerView控制器,您可以在ChildViewController中为要传递的值设置一个属性。然后在ParentViewController中执行以下操作:
self.ChildViewController.yourProperty = yourValue
相反可以通过4种方式完成:

  • 您可以制定委托协议以在控制器之间通信数据。
  • 您可以在ChildViewController中发布通知,并将父控制器添加为观察者。
  • 您可以使用KVO。
  • 最简单的方法是,您可以在parentviewController中创建一个属性,然后像下面这样访问它
    ((YourParentViewControllerClassType *)self.parentViewController).yourParentProperty = TheValueYouWant;
    
  • 10-08 07:28