【问题标题】:UIVIewController custom init methodUIVIewController 自定义初始化方法
【发布时间】:2010-06-04 10:40:21
【问题描述】:

我想为我的 UIViewController 子类实现一个自定义初始化方法来“替换”initWithNibName 方法。

这是代码:

- (id) initWithMessage:(NSString *)message {
    if ((self = [super initWithNibName:@"ToolTip" bundle:nil])) {
        label.text = message;
    }

    return self;
}

标签是从 xib 加载的,但此时对标签的引用为零(可能是因为 xib 尚未加载?)。有谁知道解决方案?谢谢

【问题讨论】:

    标签: iphone objective-c uiviewcontroller


    【解决方案1】:

    我知道这是一个老问题,但正确的答案是在视图加载后使用viewDidLoad 方法进行任何其他设置。视图在需要时才会加载,并且在收到内存警告时可能会被卸载。因此,不应在 init 方法中触及视图控制器的视图。

    【讨论】:

      【解决方案2】:

      您应该以编程方式声明标签并在 init 中对其进行初始化,而不是从 nib 中进行。

      是这样的:

      假设UILabel *label 是一个类变量,为它定义了@property@synthesize

      - (id) initWithMessage:(NSString *)message {
      
          if ((self = [super initWithNibName:@"ToolTip" bundle:nil])) {
              label = [[UILabel alloc] init];
              label.text = message;
              [self.view addSubView:label];
          }
      
          return self;
      }
      

      在“dealloc”方法中释放标签。 希望这可以帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-12-04
        • 1970-01-01
        • 1970-01-01
        • 2015-08-07
        • 1970-01-01
        • 1970-01-01
        • 2020-01-02
        相关资源
        最近更新 更多