我添加了一个像这样的孩子的视图控制器:
UIViewController *sendViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"send"];
[self addChildViewController:sendViewController];
在sendViewController中我得到了这个属性:
@property (strong, nonatomic) IBOutlet StringInputTableViewCell *nameCell;
在该课程中,我可以执行类似self.nameCell.textField.text = @"test";
的操作,将textField设置为test
但是如何才能在父类的textField中填写这个文本?
答案 0 :(得分:1)
您正在混合模型和视图,因此打破了MVC设计模式。
您不应该尝试阅读UI元素的内容。相反,您应该拥有由控制器管理的所有数据(即模型)和视图(即UI,例如文本字段)。
有(简单)方法可以获取此信息,但我强烈建议您不走这条路!
答案 1 :(得分:0)
父类和子类之间的基本继承应该允许您向前传递属性。
您需要创建该类的子对象,例如 obj 。然后获取您将使用的字段的文本值(在父类中)
id obj = [[ChildClassName alloc] init];
NSString *myChildsText = obj.nameCell.textField.text; // will get the value @"test" as assigned in the childclass.
当然,您可以在@property的子类中创建一个getter和setter。例如::
- (IBOutlet)nameCell {
// returns the value
}
- (IBOutlet)setNameCell :(StringInputTableViewCell)newValue {
//set the value to the @synth value here…
}
然后你可以调用子对象getter / setters,如下所示::
NSString * text = [obj nameCell]; //等等
答案 2 :(得分:0)
您可以在此处使用4种方法
a)继续引用你的childviewcontroller - >直接获得价值 b)使用委托方法(最适合观察文本字段中的更改) c)发送NSNotification - >这带来了开销,在某些方面它可以帮助你很多 d)KVO