1 / 36

Wednesday 2-3:30, DH 1046

Wednesday 2-3:30, DH 1046. COMP 446 / ELEC 446 Mobile Device Applications. Scott Cutler Professor in the Practice of Computer Technology Department of Computer Science Department of Electrical and Computer Engineering cutler@rice.edu 9/19/12. Agenda. Events of the Week

sibley
Download Presentation

Wednesday 2-3:30, DH 1046

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Wednesday 2-3:30, DH 1046 COMP 446 / ELEC 446 Mobile Device Applications Scott Cutler Professor in the Practice of Computer Technology Department of Computer Science Department of Electrical and Computer Engineering cutler@rice.edu 9/19/12

  2. Agenda • Events of the Week • Next week’s assignment and class • Review of Assignment 2 • Some more on Views, Gestures, Protocols • Questions on Assignment #3 COMP 446 / ELEC 446 - Week 5

  3. Events of the Week • Apple announces iPhone 5: What you need to know • I miss Apple's reality distortion field • Apple's dock connector change is awful, don't kid yourselves • Apple's iPhone 5: 2 million preorders, 24 hours and a unique upgrade cycle • Apple fanboys fight back against Samsung • Fox: iPhone 5 has laser keyboard, holographic images • Yahoo Tells Workers: No More BlackBerrys • What you gain and lose with Office 2013 subscriptions COMP 446 / ELEC 446 - Week 5

  4. Current Roster • Victor Acuna • Ryan Artecona • Gbenga Badipe • Peter Chang • Joan Chao COMP 446 / ELEC 446 - Week 5

  5. Current Roster (2) • Alex Chiu • Heaven Chen • Lingo Dai • Weibo He • SahilHingorani COMP 446 / ELEC 446 - Week 5

  6. Current Roster (3) • Abdul Nimeri • Bill Robertson • Frank Salinas • Tyler Siegert • Austin Witt • Matthew Zhao COMP 446 / ELEC 446 - Week 5

  7. COMP 446 Syllabus • Lecture 1 - 8/22/12 - Introduction • Watch before: None • Assignment: #1 - Calculator • Assignment due: Friday, 8/31 6:00 am (Thursday 30:00) • Lecture 2 - 8/29/12- Assignment 1 issues and questions from videos • Watch before: 1, 2 • Assignment: #2 – Function Calculator • Assignment due: Friday, 9/7 6:00 am (Thursday 30:00) • Lecture 3 - 9/05/12 - Assignment 2 issues and questions from videos • Watch before: 3, 4 (demo part) • Assignment: #3 – Graphing Universal Calculator • Assignment due: Tuesday, 9/18 6:00 am (Monday 30:00) • Lecture 4 - 9/12/12 - Assignment 3 issues and questions from videos • Watch before: 4 (post demo), 5, 6 • Assignment: Continue with #3 – Graphing Universal Calculator • Assignment due: Tuesday, 9/18 6:00 am (Monday 30:00) • Lecture 5 - 9/19/12 - Assignment 3 issues and questions from videos • Watch before: Watch 7 before class, 8 after class • Assignment: #4 – Fiickr Top Places • Assignment due: Friday, 9/28 6:00 am (Thursday 30:00) COMP 446 / ELEC 446 - Week 5

  8. COMP 446 Syllabus • Lecture 6 - 9/26/12 - Assignment 4 issues and questions from videos • Watch before: 8, 9 very beginning of 10 • Assignment: #5 – Fiickr Map Places • Assignment due: Friday, 10/5 6:00 am (Thursday 30:00) • Lecture 7 - 10/03/12 - Assignment 5 issues and questions from videos • Watch before: 10 (after Tab Bar), 11, 12 • Assignment: 1: #6 – Fiickr Core Data - Likely to be broken into required and optional parts - Optional part required for A+2: Final Project Topic (due before next class) • Assignment due: Friday, 10/12 6:00 am (Thursday 30:00) • Lecture 8 - 10/10/12 - Assignment 6 issues and SQL • Watch before: 13, 14 • Assignment: Final Project Proposal • Assignment due: Tuesday, 10/16 6:00 am (Monday 30:00) • Lecture 9 - 10/17/12 - iOS6 • Watch before: Optional 15, 16 • Assignment: iOS 6 app • Assignment due: Friday, 10/26 6:00 am (Thursday 30:00) COMP 446 / ELEC 446 - Week 5

  9. COMP 446 Syllabus • Lecture 10 - 10/24/12 – HTML 5 • Watch before: Optional 17, 18 • Assignment: Major Final Project Feature • Assignment due: Friday, 11/2 6:00 am (Thursday 30:00) • Lecture 11 - 10/31/12 - TBD • Assignment: Continue working on Final Project • Assignment due: Wednesday, 11/28 2:00pm • Lecture 12 - 11/7/12- Android vs. iOS vs. Windows Phone group debate • Assignment: Continue working on Final Project • Assignment due: Wednesday, 11/28 2:00pm • Lecture 13 - 11/14/12 - Individual meetings on Final Project • Assignment: Continue working on Final Project • Assignment due: Wednesday, 11/28 2:00pm • Lecture 14 - 11/21/12 – No class, but continue on final project • Assignment: Continue working on Final Project • Assignment due: Wednesday, 11/28 2:00pm • Lecture 15 - 11/28/12 - Final Presentations • Assignment: Document Final Project • Assignment due: By time assigned for COMP 446 final (there is NO final exam) COMP 446 / ELEC 446 - Week 5

  10. Final Projects • Projects will be individual • An acceptable iPad project can couple to an iPhone project • Projects can be in iOS, Windows 8 or Android • You are responsible for Win 8 or Android technology • I have a small number of iOS devices that can be used by students without one. • May have to share • Likely have to deploy from a non-community Mac • Must utilize at least one major and one minor iOS framework and feature not covered in first 6 assignments; preferably >1 major. • Project must be pre-approved • Often because proposed project too difficult to complete • Sometimes need to be modified for content COMP 446 / ELEC 446 - Week 5

  11. Final Project Ideas • Augmented Reality is always a winner • There are some interesting robots utilizing the iPhone. • One could make a board game with iPhone players and iPad game board. • OpenGL is a good feature. • External universal frameworks are NOT allowed. • Utilizing a backend is good, but not much credit given for backend logic COMP 446 / ELEC 446 - Week 5

  12. Week 6 • Watch CS193p lectures #8 (second part), #9 and #10 (through Tab Bar) • Make progress on CS193p Assignment #4 • Try and complete before 9/26 class. Due Friday, 9/28 6:00 am . • Submit assignments, review lectures at www.comp446.com • Start thinking about big project • Next week’s lecture – UIScrollView and Table View Controllers COMP 446 / ELEC 446 - Week 5

  13. What is coming up in the assignments? • Assignment #3 – Graphing Calculator • Core Graphics, views, frames, bounds, etc. • Navigation Controllers • Storyboards and Segues • Gesture recognizers • Protocols and Delegates • iPad apps, Universal Apps, SplitView controllers • Assignment #1 was easy. #2 was more difficult. #3 incorporates many new paradigms • Will need to watch through video 7 for iPad information COMP 446 / ELEC 446 - Week 5

  14. What is coming up in the assignments? • Assignment #4 – Flickr Top Places • Tab bar controllers • TableView controllers • ScrollViews • Data from the internet • Assignment #5 – Fast Flickr Map • Builds on Assignment #4 • Multi Threading / Grand Central Dispatch • MapKit • Assignment #6 – Core Data Flickr • UIDocument • Core Data COMP 446 / ELEC 446 - Week 5

  15. Assignment #3a Comments • Most people handled graph title display wrong. What is the purpose of the title? • Still had a number of @synthesize issues with “_” • Back button too often said BACK • For many x did not complete a number. • Many of you took away your undo key. It should still be there. • Some pans did not pan linearly. Graph should follow finger – and do so in real time. • Axis should always be full screen • For calculator, if you don’t do rotation properly, don’t allow rotation. • Some submissions did not handle rotation of the graph. COMP 446 / ELEC 446 - Week 5

  16. Target / Action • When a controller wants a view to get back to it when something happens, it use Target / Action. • The Target is the class instance to receive a message from the view when something happens • The Action is the method sent to the Target when the trigger happens. • View items, like buttons, can have multiple target/action pairs. • A target and its associated method can be triggered by multiple situations. COMP 446 / ELEC 446 - Week 5

  17. Protocols, Delegates and DataSources • Protocols define a set of required and optional methods and properties to accomplish something • Protocols can be placed in an existing or a separate header file. • Use @class className to forward reference a class • Protocols can inherit other protocols – adding the inherited requirements and optional methods to their own • Delegates are classes which publicize that they handle the requirements of a protocol. These classes get set as the delegate normally in a property of the class defining the protocol. • It is safe to send a required protocol method to a class that states it handles a protocol. It must check respondsTo for optional methods. • <myProtocol> is used to identify that a class responds to myProtocol • Can also be added to an iVar or property. • DataSources are Delagates handling data values COMP 446 / ELEC 446 - Week 5

  18. Protocols and Assignment #3 • The Calculator is an MVC with the CalculatorBrain as the Model • The Graphing MVC is supposed to be generic and use a protocol for its view’s data (valueAtPointX) • Where should the protocol be defined? • Where should the protocol be implemented? COMP 446 / ELEC 446 - Week 5

  19. Assignment 3 Protocol Definition • GraphView controller uses delegate to get y value for given x • GraphView wants to be generic • As such, GraphView is a great place to define protocol COMP 446 / ELEC 446 - Week 5

  20. Assignment 3 DataSource • Can go in either GraphViewController or CalculatorViewController. • If in GraphViewController, then GraphViewController is no longer generic • Preferred location is in CalculatorViewController • Keeps GraphViewController generic • Perceived as being more difficult; but actually not • Requires indirect setting of DataSource • Removes need to pass equation COMP 446 / ELEC 446 - Week 5

  21. Assignment 3 DataSource Steps • CVC <GraphViewDataSource> • self.gvc.dataSource=self; • GVC • -(void)setDataSource:(id)dataSource {self.gv.dataSource = dataSource; } • GV • @property (nonatomic, weak) id <GraphViewDataSource> dataSource; • @synthesize dataSource=_dataSource; COMP 446 / ELEC 446 - Week 5

  22. Review of Video 7 Items • Many of the slides to follow come directly from the Fall 2011 Stanford CS193p slide deck. • Some come from earlier versions of CS193p which I think were a bit clearer than the current deck COMP 446 / ELEC 446 - Week 5

  23. UIToolbar • Collection of UIBarButtonItems • Enable by checking “Shows Toolbar” • Toolbar items belong to view, not controller COMP 446 / ELEC 446 - Week 5

  24. UISplitViewController COMP 446 / ELEC 446 - Week 5

  25. UISplitViewControllerDelegate • Required to see left side in portrait mode. • - (BOOL)splitViewController:(UISplitViewController *)sender shouldHideViewController:(UIViewController *)master inOrientation:(UIInterfaceOrientation)orientation {return UIInterfaceOrientationIsPortrait(orientation);} // or YES/NO COMP 446 / ELEC 446 - Week 5

  26. Left Side Going Away, Show BBI • - (void)splitViewController:(UISplitViewController *)sender willHideViewController:(UIViewController *)master withBarButtonItem:(UIBarButtonItem *)barButtonItem forPopoverController:(UIPopoverController *)popover { barButtonItem.title= @“Master”; // use a better word than “Master”! // setSplitViewBarButtonItem: must put the bar button somewhere on screen // probably in a UIToolbar or a UINavigationBar [detailViewControllersetSplitViewBarButtonItem:barButtonItem]; } • Your job to write setSplitViewBarButtonItem COMP 446 / ELEC 446 - Week 5

  27. Left Side Coming Back, Remove BBI • - (void)splitViewController:(UISplitViewController *)sender willShowViewController:(UIViewController *)master invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem { // removeSplitViewBarButtonItem: must remove the bar button from its toolbar [detailViewControllerremoveSplitViewBarButtonItem:nil]; } COMP 446 / ELEC 446 - Week 5

  28. Sample setSplitViewBarButtonItem - (void)setSplitViewBarButtonItem:(UIBarButtonItem *)barButtonItem { UIToolbar*toolbar = [self toolbar]; // might be outlet or calculated NSMutableArray*toolbarItems = [toolbar.itemsmutableCopy]; if (_splitViewBarButtonItem) [toolbarItemsremoveObject:_splitViewBarButtonItem]; // put the bar button on the left of our existing toolbar if (barButtonItem) [toolbarItemsinsertObject:barButtonItem atIndex:0]; toolbar.items= toolbarItems; _splitViewBarButtonItem = barButtonItem; } COMP 446 / ELEC 446 - Week 5

  29. Updating Detail View Controller • Target/Action or Segue • Since detail always on screen and segue replaces view, Target / Action more common • Get pointer to detail view controller: • id detailViewController = [[self.splitViewControllerviewControllers] lastObject]; COMP 446 / ELEC 446 - Week 5

  30. UIPopoverController • Not a UIViewController subclass • Typically created in storyboard • contentViewController property for displayed viewController COMP 446 / ELEC 446 - Week 5

  31. Universal Applications • If not enabled, runs iPhone apps a 2X • If target for iPad, but nothing special done, you end up with a full screen application • Typical paradigm is with UISplitViewController • Create separate iPhone and iPad storyboards • Often significant reuse of most classes COMP 446 / ELEC 446 - Week 5

  32. Am I Running on a iPad??? • BOOL iPad = (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad); • If (self.splitViewController) { … } //splitViewController only on iPad COMP 446 / ELEC 446 - Week 5

  33. View Controller Lifecycle • Made significantly simpler in iOS 5 with ARC • Main entry points • - awakeFromNib // earliest entry • - viewDidLoad // outlets set, bounds not set • - viewWillAppear:(BOOL)animated • VERY close to appearing. • May happen multiple times • Put expensive operations in separate thread COMP 446 / ELEC 446 - Week 5

  34. Will / Did • Many lifecycle methods have Will and Did versions • - (void)viewWillDisappear:(BOOL)animated • - (void)viewDidAppear:(BOOL)animated; • - (void)viewDidDisappear:(BOOL)animated; • - (void)willRotateToInterfaceOrientation: … • - (void)willAnimateRotationToInterfaceOrientation: • - (void)didRotateFromInterfaceOrientation: COMP 446 / ELEC 446 - Week 5

  35. viewDidUnload • Called in low memory situations • Only if you are off screen • ARC handles most of what used to be done COMP 446 / ELEC 446 - Week 5

  36. Assignment #3 Questions COMP 446 / ELEC 446 - Week 5

More Related