变量未传递给 UIView

Posted

技术标签:

【中文标题】变量未传递给 UIView【英文标题】:Variable not passed to UIView 【发布时间】:2013-11-26 18:50:14 【问题描述】:

我试图将一个变量从我的主 UIViewController 传递到 UIView。

CGRect frame = CGRectMake(0,0,347, 308);
XBMCPopUpView * xbmcpop = [[XBMCPopUpView alloc]initWithFrame:frame];

xbmcpop.DevIP = @"2222";

[self.view addSubview:xbmcpop];

对象 xbmcpop 被创建,其字符串属性“DevIP”被正确分配。但是当实际查看 UIVIEW 时,似乎查看的实例与我创建的实例不同,并且变量 @"2222" 未传递给字符串属性 "DevIP"

注意:我的主 UIViewController 位于带有导航控制器的情节提要中

如果你有兴趣看“XBMCPopUpView 类,这里是:

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>

@class XBMCPopUpView;


@interface XBMCPopUpView : UIView

    NSString * DevIP;


@property (strong,nonatomic) NSString *DevIP;

- (id)initWithFrame:(CGRect)frame;

-(IBAction)sendPlay:(id)sender;

@end

【问题讨论】:

【参考方案1】:

@interface XBMCPopUpView : UIView

删除


    NSString * DevIP;

【讨论】:

【参考方案2】:

由于您使用的是故事板,因此您需要为此使用视图控制器的 awakeFromNib 方法。

当你添加awakeFromNib方法时,别忘了在那里调用[super awakeFromNib]

- (void)awakeFromNib

     [super awakeFromNib];

    CGRect frame = CGRectMake(0,0,347, 308);
    XBMCPopUpView * xbmcpop = [[XBMCPopUpView alloc]initWithFrame:frame];
    xbmcpop.DevIP = @"2222";
    [self.view addSubview:xbmcpop]; 

【讨论】:

感谢您的解释。是从 nib 中唤醒 UIview 或 UIviewcontroller 中的方法吗?你能提供一些示例代码吗?谢谢 另外,如何将许多方法中的变量传递给 awakefromnib 方法。我只是通过 @"2222" 来简化我的问题,但实际上这个字符串是从 sqllite 数据库中提取的,并且是通过单击按钮触发的 抱歉,我刚刚注意到您的视图 xbmcpop 不在情节提要中。我已经更正了答案并添加了代码。让我知道这是否有效。 在调试视图中,对象内的变量设置正确。但由于某种原因,UI 上显示的实际 UI 视图并不是我们在代码中创建的!它是具有空变量的类的实例 你怎么知道这是一个不同的实例?在您的代码中(在我的示例中也是如此),xbmcpop 是本地引用。在这个方法之外的调试器中如何访问它?

以上是关于变量未传递给 UIView的主要内容,如果未能解决你的问题,请参考以下文章

asp.net 核心环境变量未传递给 vuejs 配置

Bash:导出未将变量正确传递给父级

未使用 JS 闭包将变量传递给 onClick 函数

PHP 命名空间 - 父类变量未正确传递给子类

Angular.js 6.1.0 - 变量未传递给视图

Vue.js 变量在传递给另一个组件后未定义