mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-09-08 21:49:41 +00:00
ASViewController currently cannot be subclassed in Swift, as the original call to `[super init]` directs to calling the designated initializer of UIViewController `[self initWithNibName:bundle:]`. Because of Swift's initializer inheritance behavior, this designated initializer will not implicitly be available on the subclassed ASViewController without some extra boilerplate. Adding an explicit call to the designated initializer fixes this issue.
65 lines
1.3 KiB
Objective-C
65 lines
1.3 KiB
Objective-C
//
|
|
// ASViewController.m
|
|
// AsyncDisplayKit
|
|
//
|
|
// Created by Huy Nguyen on 16/09/15.
|
|
// Copyright (c) 2015 Facebook. All rights reserved.
|
|
//
|
|
|
|
#import "ASViewController.h"
|
|
#import "ASAssert.h"
|
|
#import "ASDimension.h"
|
|
|
|
// FIXME: Temporary nonsense import until method names are finalized and exposed
|
|
#import "ASDisplayNode+Subclasses.h"
|
|
|
|
@implementation ASViewController
|
|
{
|
|
BOOL _ensureDisplayed;
|
|
}
|
|
|
|
- (instancetype)initWithNode:(ASDisplayNode *)node
|
|
{
|
|
if (!(self = [super initWithNibName:nil bundle:nil])) {
|
|
return nil;
|
|
}
|
|
|
|
ASDisplayNodeAssertNotNil(node, @"Node must not be nil");
|
|
ASDisplayNodeAssertTrue(!node.layerBacked);
|
|
_node = node;
|
|
|
|
return self;
|
|
}
|
|
|
|
- (void)loadView
|
|
{
|
|
ASDisplayNodeAssertTrue(!_node.layerBacked);
|
|
self.view = _node.view;
|
|
}
|
|
|
|
- (void)viewWillLayoutSubviews
|
|
{
|
|
[super viewWillLayoutSubviews];
|
|
CGSize viewSize = self.view.bounds.size;
|
|
ASSizeRange constrainedSize = ASSizeRangeMake(viewSize, viewSize);
|
|
[_node measureWithSizeRange:constrainedSize];
|
|
}
|
|
|
|
- (void)viewDidLayoutSubviews
|
|
{
|
|
if (_ensureDisplayed && self.neverShowPlaceholders) {
|
|
_ensureDisplayed = NO;
|
|
[self.node recursivelyEnsureDisplay];
|
|
}
|
|
[super viewDidLayoutSubviews];
|
|
}
|
|
|
|
- (void)viewWillAppear:(BOOL)animated
|
|
{
|
|
[super viewWillAppear:animated];
|
|
_ensureDisplayed = YES;
|
|
[_node recursivelyFetchData];
|
|
}
|
|
|
|
@end
|