0

我已经像这样添加了一个视图控制器:

UIViewController *sendViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"send"];
[self addChildViewController:sendViewController];

在 sendViewController 我得到了这个属性:

@property (strong, nonatomic) IBOutlet StringInputTableViewCell *nameCell;

在那个课程中,我可以做一些事情,比如self.nameCell.textField.text = @"test";设置 textField 来测试

但是我怎样才能得到这个填充在父类的 textField 中的文本呢?

4

3 回答 3

1

您正在混合模型和视图,从而打破了 MVC 设计模式

您不应该尝试阅读 UI 元素的内容。相反,您应该拥有由控制器管理的所有数据(即模型)和视图(即 UI,例如文本字段)。

有(简单的)方法可以获取此信息,但我强烈建议您不要走那条路!

于 2013-04-04T13:58:50.210 回答
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/setter如下::

NSString *text = [obj nameCell]; //等等等等

于 2013-04-04T13:58:04.263 回答
0

您可以在这里使用 4 种方法

a) 继续引用您的 childviewcontroller -> 直接获取值 b) 使用委托方法(最适合观察文本字段中的更改) c) 发送 NSNotification -> 这会带来开销,在某些方面它可以帮助您很多 d) KVO

于 2013-04-04T14:00:16.260 回答