Migration guide: MDCAppBar to MDCAppBarViewController

Deprecation schedule:

  • October 15, 2018: MDCAppBar and any references to it in MDC will deprecated.
  • November 15, 2018: MDCAppBar and any references to it in MDC will be deleted.

MDCAppBarViewController is a direct replacement for MDCAppBar. The migration essentially looks like so:

// Step 1
-  let appBar = MDCAppBar()
+  let appBarViewController = MDCAppBarViewController()

// Step 2
-  self.addChildViewController(appBar.headerViewController)
+  self.addChildViewController(appBarViewController)

// Step 3
-  appBar.addSubviewsToParent()
+  // Match the width of the parent view.
+  CGRect frame = appBarViewController.view.frame;
+  frame.origin.x = 0;
+  frame.size.width = appBarViewController.parentViewController.view.bounds.size.width;
+  appBarViewController.view.frame = frame;
+
+  view.addSubview(appBarViewController.view)
+  appBarViewController.didMove(toParentViewController: self)

MDCAppBarViewController is a subclass of MDCFlexibleHeaderViewController, meaning you configure an MDCAppBarViewController instance exactly the same way you'd configure an MDCFlexibleHeaderViewController instance.

MDCAppBar also already uses MDCAppBarViewController under the hood so you can directly replace any references of appBar.headerViewController with appBarViewController.

Swift find and replace recommendations

FindReplace
let appBar = MDCAppBar()let appBarViewController = MDCAppBarViewController()
self.addChildViewController(appBar.headerViewController)self.addChildViewController(appBarViewController)
appBar.addSubviewsToParent()view.addSubview(appBarViewController.view)
appBarViewController.didMove(toParentViewController: self)
self.appBar.headerViewControllerself.appBarViewController

Objective-C find and replace recommendations

FindReplace
MDCAppBar *appBar;MDCAppBarViewController *appBarViewController;
appBar = [[MDCAppBar alloc] init]appBarViewController = [[MDCAppBarViewController alloc] init]
addChildViewController:appBar.headerViewControlleraddChildViewController:appBarViewController
[self.appBar addSubviewsToParent];[self.view addSubview:self.appBarViewController.view];
[self.appBarViewController didMoveToParentViewController:self];

Example migrations