Presentation is loading. Please wait.

Presentation is loading. Please wait.

EEC-492/693/793 iPhone Application Development

Similar presentations


Presentation on theme: "EEC-492/693/793 iPhone Application Development"— Presentation transcript:

1 EEC-492/693/793 iPhone Application Development
Lecture 11 Wenbing Zhao & Nigamanth Sridhar 1/18/2019 EEC492/693/793 - iPhone Application Development

2 Outline Administrative Navigation Controller Assignments:
From now on: review your app/progress at the end of each session Navigation Controller Assignments: The push and pop app Continue building the calculator app 1/18/2019 1/18/2019 EEC492/693/793 - iPhone Application Development EEC492/693/793 - iPhone Application Development 2

3 Navigation Controller
The navigation controller (UINavigationController) can be used to manage a stack of view controllers Stack: a data structure that manages a collection of objects last in, first out / first in, last out Push: add an object to a stack Pop: remove an object from the stack Navigation bar Title of the top view controller Left bar button to go to the previous view controller (pop) Right bar button to allow editing etc. 1/18/2019 EEC492/693/793 - iPhone Application Development

4 EEC492/693/793 - iPhone Application Development
Example App: Mail Top view controller’s title Previous view controller’s title Top view controller’s view Top view controller’s toolbar 1/18/2019 EEC492/693/793 - iPhone Application Development

5 EEC492/693/793 - iPhone Application Development
How to Navigate Push to add a view controller (to the UINavigationController’s stack) - (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated; Pop to remove a view controller from the stack (the previous one will become the top view controller) - (UIViewController *)popViewControllerAnimated:(BOOL)animated; Set to change the entire stack of view controllers - (void)setViewControllers:(NSArray *)viewControllers animated:(BOOL)animated; 1/18/2019 EEC492/693/793 - iPhone Application Development

6 Pushing Your First View Controller
- (void)applicationDidFinishLaunching { // Create a navigation controller navController = [[UINavigationController alloc] init]; // Push the first view controller on the stack [navController pushViewController:firstViewController animated:NO]; // Add the navigation controller’s view to the window [window addSubview:navController.view]; …. } Where would you do this? 1/18/2019 EEC492/693/793 - iPhone Application Development

7 Push from within a View Controller on the Stack due to User Actions
- (void)someAction:(id)sender { // Potentially create another view controller UIViewController *viewController = ...; [self.navigationController pushViewController:viewController animated:YES]; } Where on earth does navigationController come from?! It is defined in UIViewController as a property Since our view controller inherited from UIViewController, we do have it as well navigationItem is another property declared in UIViewController 1/18/2019 EEC492/693/793 - iPhone Application Development

8 Customizing Navigation
UINavigationItem: Describes appearance of the navigation bar Title string or custom title view Left & right bar buttons More properties defined in UINavigationBar.h Every view controller has a navigation item for customizing Displayed when view controller is on top of the stack Left Bar Button Item View Controller Navigation Item Title View Right Bar Button Item 1/18/2019 EEC492/693/793 - iPhone Application Development

9 EEC492/693/793 - iPhone Application Development
Displaying a Title UIViewController already has a title property @property(nonatomic,copy) NSString *title; Navigation item inherits automatically Previous view controller’s title is displayed in back button viewController.title 1/18/2019 EEC492/693/793 - iPhone Application Development

10 EEC492/693/793 - iPhone Application Development
Left & Right Buttons UIBarButtonItem Special object, defines appearance & behavior for items in navigation bars and toolbars Display a string, image or predefined system item Target + action (like a regular button) 1/18/2019 EEC492/693/793 - iPhone Application Development

11 EEC492/693/793 - iPhone Application Development
Text Bar Button Item - (void)viewDidLoad { UIBarButtonItem *fooButton = [[UIBarButtonItem alloc] style:UIBarButtonItemStyleBordered target:self self.navigationItem.leftBarButtonItem = fooButton; [fooButton release]; } 1/18/2019 EEC492/693/793 - iPhone Application Development

12 EEC492/693/793 - iPhone Application Development
System Bar Button Item - (void)viewDidLoad { UIBarButtonItem *addButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self self.navigationItem.rightBarButtonItem = addButton; [addButton release]; } 1/18/2019 EEC492/693/793 - iPhone Application Development

13 EEC492/693/793 - iPhone Application Development
Edit/Done Button Very common pattern Every view controller has one available Target/action already set up self.navigationItem.leftBarButtonItem = self.editButtonItem; // Called when the user toggles the edit/done button - (void)setEditing:(BOOL)editing animated:(BOOL)animated { // Update appearance of views } 1/18/2019 EEC492/693/793 - iPhone Application Development

14 EEC492/693/793 - iPhone Application Development
Custom Title View Arbitrary view in place of the title UISegmentedControl *segmentedControl = ... self.navigationItem.titleView = segmentedControl; [segmentedControl release]; 1/18/2019 EEC492/693/793 - iPhone Application Development

15 EEC492/693/793 - iPhone Application Development
Back Button If you don’t like the default back button (using the title of the view controller), you can customize it self.title there, CS193P!”; UIBarButtonItem *heyButton = [[UIBarButtonItem alloc] ...]; self.navigationItem.backButtonItem = heyButton; [heyButton release]; 1/18/2019 EEC492/693/793 - iPhone Application Development

16 Combining Tab Bar and Navigation Controllers
You can combine the tab bar and navigation controllers to create multiple parallel hierarchies 1/18/2019 EEC492/693/793 - iPhone Application Development

17 Tab Bar + Navigation Controllers
View Controller Navigation Item View Controller View Controller Navigation Item View Controller View Controller Navigation Item 1/18/2019 EEC492/693/793 - iPhone Application Development

18 Nesting Navigation Controllers (into Tab Bar Controller)
Create a tab bar controller tabBarController = [[UITabBarController alloc] init]; Create each navigation controller navController = [[UINavigationController alloc] init]; [navController pushViewController:firstViewController animated:NO]; Add them to the tab bar controller tabBarController.viewControllers = [NSArray arrayWithObjects: navController, anotherNavController, someViewController, nil]; 1/18/2019 EEC492/693/793 - iPhone Application Development

19 Assignment: Push and Pop App
1/18/2019 EEC492/693/793 - iPhone Application Development


Download ppt "EEC-492/693/793 iPhone Application Development"

Similar presentations


Ads by Google