
git-subtree-dir: submodules/AsyncDisplayKit git-subtree-mainline: d06f423e0ed3df1fed9bd10d79ee312a9179b632 git-subtree-split: 02bedc12816e251ad71777f9d2578329b6d2bef6
3.0 KiB
Executable File
title | layout | permalink | prevPage | nextPage |
---|---|---|---|---|
ASViewController | docs | /docs/containers-asviewcontroller.html | faq.html | containers-asnodecontroller.html |
ASViewController
is a subclass of UIViewController
that adds several useful features for hosting ASDisplayNode
hierarchies.
An ASViewController
can be used in place of any UIViewController
- including within a UINavigationController
, UITabBarController
and UISplitViewController
or as a modal view controller.
Benefits of using an ASViewController
:
- Save Memory. An
ASViewController
that goes off screen will automatically reduce the size of the fetch data and display ranges of any of its children. This is key for memory management in large applications. ASVisibility
Feature. When used in anASNavigationController
orASTabBarController
, these classes know the exact number of user taps it would take to make the view controller visible.
More features will be added over time, so it is a good idea to base your view controllers off of this class.
Usage
A UIViewController
provides a view of its own. An ASViewController
is assigned a node to manage in its designated initializer -initWithNode:
.
Consider the following ASViewController
subclass, PhotoFeedNodeController
, from the ASDKgram example project that would like to use a table node as its managed node.
This table node is assigned to the ASViewController
in its -initWithNode:
designated initializer method.
- (instancetype)init
{
_tableNode = [[ASTableNode alloc] initWithStyle:UITableViewStylePlain];
self = [super initWithNode:_tableNode];
if (self) {
_tableNode.dataSource = self;
_tableNode.delegate = self;
}
return self;
}
init(models: [Model]) {
let tableNode = ASTableNode(style: .plain)
super.init(node: tableNode)
self.models = models
self.tableNode = tableNode
self.tableNode.delegate = self
self.tableNode.dataSource = self
}
ASViewController
. That is to say, even if you don't use ASViewController
's designated initializer -initWithNode:
, and only use the ASViewController
in the manner of a traditional UIViewController
, this will give you the additional node support if you choose to adopt it in different areas your application.