【问题标题】:How to check a xib's file owner programmatically?如何以编程方式检查 xib 的文件所有者?
【发布时间】:2015-12-06 15:51:25
【问题描述】:

我在 xib 的实现中 - 是否可以在运行时以编程方式检查文件的所有者是谁?

类似这样的东西:(只是它显然不起作用:P)

-(id)initWithCoder:(NSCoder *)coder{
    if ([self.owner isEqualToString:@"FirstTab"]){
        //do something
    }else if ([self.owner isEqualToString:@"SecondTab"]){
        //do something else
    }
}

【问题讨论】:

  • initWithCode:-方法属于哪个类?所有者还是 NSView/UIView?

标签: ios objective-c macos cocoa xib


【解决方案1】:

UIViewController,您应该能够像这样从viewDidLoad 中获取 nib 文件的名称:

self.nibName

您可以像上面一样检查笔尖名称:

if ([self.nibName isEqualToString:@"FirstTab"]) {

} else if ([self.nibName isEqualToString:@"SecondTab"]) {

}

【讨论】:

    【解决方案2】:

    如果是您的自定义 NSView-subclass,请与您的所有者一起添加属性

    @interface MyCustomView : NSView 
    
    @property (nonatomic, weak) id owner;
    
    @end
    

    别忘了在你的NSViewController 中设置这个属性

    - (void)viewDidLoad
    {
      [super viewDidLoad];
      if ([self.view isKindOfClass:[MyCustomView class]])
      {
        MyCustomView *view = (MyCustomView *)self.view;
        view.owner = self; // in view's awakeFromNib: check owner value
      }
    }
    

    我通常定义协议,但这取决于您的目的。为什么需要知道视图是否有所有者对象?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-18
      • 2016-02-15
      • 1970-01-01
      • 1970-01-01
      • 2010-11-19
      相关资源
      最近更新 更多