变量未传递给 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的主要内容,如果未能解决你的问题,请参考以下文章