如何将数据传递给以编程方式创建的子视图控制器

时间:2014-04-24 03:19:46

标签: ios objective-c uiscrollview

在我的应用程序中,我创建了一个子视图控制器,我已使用故事板ID进行实例化。然后我以编程方式将此子视图添加到UIScrollView,这就是为什么我不能简单地在故事板中创建容器视图。继承人我还需要做什么:我需要将数据传递给子VC。我知道如何在使用segue到VC时传递数据,但在这种情况下我该如何执行此操作?

4 个答案:

答案 0 :(得分:1)

您要将子项添加到的控制器具有childViewControllers属性,该属性包含控制器具有的所有子项。如果您只有一个孩子,那么您可以使用

从父母那里引用它
SomeClass *child = self.childViewControllers[0];
child.someProperty = self.propertyIWantToPass;

答案 1 :(得分:0)

考虑你要从ViewController1向ViewController2,ViewController3发送字符串数据。

在ViewController2和ViewController3中创建字符串变量的属性。

@property(nonatomic,strong) NSString *str;

同时推送ViewController2和ViewController3:

  ViewController2 *viewController = [ViewController2 alloc]init];
  viewController2.str = @"Some text";
  [self.navigationController pushViewController:viewController2 animated:YES];

您可以从ViewController2中的ViewController1发送数据。

答案 2 :(得分:0)

如何为要传递给孩子的数据建立最终目的地。

@interface ChildVC : UIViewController {
    @property (nonatomic) id myPrivateData;
}
- (id)initWithData:(id)data;
@end

然后在实例化时使用-initWithData:传入数据。

ParentVC *vc = [[ParentVC alloc] init];
vc.dataIWantToPass = ...;

ChildVC *child = [[ChildVC alloc] initWithData:vc.dataIWantToPass];

答案 3 :(得分:0)

自从我做完iOS以来已经有一段时间了,

在查看Apple的文档后,我非常确定您无法将ViewController添加到UIScrollView。你需要给它一些继承UIView的东西。您可以将UIView子类化,并在赋予UIScrollView之前为其提供属性或方法以传递数据。

UIScrollView继承自UIView,因此它具有属性UIScrollView.subviews,如果引用不再可用,它可用于访问传入的VIew。


如果您只是操纵UIViewController或其中一个子类,那么您可以通过其属性UIViewController.View

访问它管理的子视图