代码之家  ›  专栏  ›  技术社区  ›  TesX

在NSViewController中加载viewDidLoad?

  •  36
  • TesX  · 技术社区  · 15 年前

    在我用的iPhone上 UIViewController viewDidLoad 运行代码以设置视图。

    我怎么能用它呢 NSViewController

    我试过了 loadView

    6 回复  |  直到 6 年前
        1
  •  41
  •   Tamas Czinege    10 年前

    从OS X 10.10开始, viewDidLoad NSViewController .

    在那之前,你必须在雪豹的房子里经过这块金块 release notes

    对在NSViewController中查找-viewWillLoad和-viewDidLoad方法的人的建议

    即使NSWindowController有-windowWillLoad和-windowDidLoad方法供您重写Mac OS 10.5中引入的NSViewController类,也没有相应的-viewWillLoad和-viewDidLoad方法。您可以重写-[NSViewController loadView]以自定义视图控制器执行nib加载之前或之后立即发生的操作。

        2
  •  49
  •   Léo Natan    11 年前

    - (void)viewWillLoad {
        if([NSViewController instancesRespondToSelector:@selector(viewWillLoad)]) {
            [super viewWillLoad];
        }
    
        ...
    }
    
    - (void)viewDidLoad {
        if([NSViewController instancesRespondToSelector:@selector(viewWillLoad)]) {
            [super viewDidLoad];
        }
    }
    
    - (void)loadView {
        BOOL ownImp = ![NSViewController instancesRespondToSelector:@selector(viewWillLoad)];
    
        if(ownImp) {
            [self viewWillLoad];
        }
    
        [super loadView];
    
        if(ownImp) {
            [self viewDidLoad];
        }
    }
    

    原始来源: http://www.cocoabuilder.com/archive/cocoa/195802-garbage-collection-leaks-and-drains.html

        3
  •  9
  •   Vaibhav B. mz2    8 年前

    -viewDidLoad , -viewWillAppear -viewDidAppear , -viewWillDisappear 在里面 NSViewController . 看到了吗 WWDC 2014 - Storyboards and Controllers on OS X session 了解更多信息,了解他们每个人什么时候都会接到电话,等等。

    -viewDidLoad:

    代码,这是后加载视图。对于从 笔尖,这是在视图设置之后。默认值不起任何作用。

    - (void)viewDidLoad NS_AVAILABLE_MAC(10_10);
    
        4
  •  5
  •   pkamb santoshIOS    6 年前

    你为什么不试试这个:

    - (void)awakeFromNib {
        //setup code
        NSLog(@"hello there");
    }
    
        5
  •  1
  •   ninjaneer    11 年前

        6
  •  -5
  •   Chintan Patel    13 年前

    嗯实际上我也会这么做。。。

    - (void)viewWillLoad {
    
        if (! bool_viewwillload) {
    
            // execute the code
            bool_viewwillload = true;
        }
    }
    
    - (void)viewDidLoad {
        if (! bool_viewdidload) {
    
            // execute the code
            bool_viewdidload = true;
        }
    }
    

    然后像这样创建负载视图

    - (void)loadView {
    
        [self viewWillLoad];
    
        [super loadView];
    
        [self viewDidLoad];
    }