【问题标题】:Variable not passed to UIView变量未传递给 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

【问题讨论】:

    标签: ios objective-c uiview uiviewcontroller


    【解决方案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 是本地引用。在这个方法之外的调试器中如何访问它?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-05-09
      • 1970-01-01
      • 2016-01-01
      • 2011-09-10
      • 2019-02-02
      • 2019-07-31
      • 2014-07-31
      相关资源
      最近更新 更多