将变量发送到添加的子视图视图控制器

Posted

技术标签:

【中文标题】将变量发送到添加的子视图视图控制器【英文标题】:sending variables to the added subview view controller 【发布时间】:2011-01-11 03:07:40 【问题描述】:

我知道如何从您的父视图中检索变量... 这是通过做这样的事情

[(mainViewController *)[self.superview] 变量名];

但现在我想知道如何将可变数据发送到子视图...

特别是如果我做这样的事情

ScreenTwoViewController *screen2 = [[ScreenTwoViewController alloc] init];
...
...
[self.addSubview:screen2.view];

在 screenTwo 我有一个变量名消息:

我想向实际视图发送一条可变消息,以便在将 screen2 视图添加为子视图时,它可以根据父视图发送的内容在该视图中显示消息??

【问题讨论】:

【参考方案1】:

如果你已经像这样在子视图中设置了变量的属性。

@property (nonatomic, retain) NSString *message;

并在你的 .m 文件中合成它而不是你总是可以使用它

screen2.message = [[NSString alloc] initWithFormat:@"use what ever init methode that you want"];

并且不要忘记在方法结束之前释放screen2以避免内存泄漏

【讨论】:

【参考方案2】:

你有Message 的二传手吗?如果不是,它是财产吗?无论哪种方式,我都会有一个 getter 方法,setMessage:(NSString *)msg,其实现如下:

- (void)setMessage:(NSString *)msg 
    [message release];
    message = [msg retain];
    // put your code to modify your UI here

这样,您将变量的赋值与视图的更新联系起来。

【讨论】:

我在屏幕两个视图控制器中没有设置器消息,我想知道如何发送变量或设置变量字符串,这样当我添加子视图时,我也可以在同时,可以显示消息...加载视图时。 so... 当前视图执行以下操作:实例化 ScreenTwoViewController *screen2 = [[ScreenTwoViewController alloc] init];等等等等 [self.addSubview:screen2];我还应该以某种方式发送一个字符串变量,这样我就可以在 screen2 内设置一条消息......所以它是动态的【参考方案3】:

您可以为ScreenTwoViewController 创建一个新的初始化方法。例如,- (id) initWithMessage:(NSString *)message

要更新消息,只需创建一个 setter 方法 - (void)setMessage:(NSString *)newMessage

【讨论】:

BTW (mainViewController *)[[self.superview] variableName]; 实际上是错误的。应该是[(mainViewController *)[self.superview] variableName];

以上是关于将变量发送到添加的子视图视图控制器的主要内容,如果未能解决你的问题,请参考以下文章

添加全屏视图作为视图控制器的子视图

如何将视图添加为某些控制器的子视图

Segue 不适用于动态添加的子视图

发送数据时如何更新视图控制器而不是推送视图控制器?

在视图控制器中添加razor变量?

将视图控制器添加到 UICollectionViewCell