mediensystemen mit ios
play

Mediensystemen mit iOS WS 2011 Prof. Dr. Michael Rohs - PowerPoint PPT Presentation

Praktikum Entwicklung von Mediensystemen mit iOS WS 2011 Prof. Dr. Michael Rohs michael.rohs@ifi.lmu.de MHCI Lab, LMU Mnchen Today Alerts, Action Sheets, text input Application architecture Table views Multiview applications


  1. Praktikum Entwicklung von Mediensystemen mit iOS WS 2011 Prof. Dr. Michael Rohs michael.rohs@ifi.lmu.de MHCI Lab, LMU München

  2. Today • Alerts, Action Sheets, text input • Application architecture • Table views • Multiview applications • Touch input • Saving data • Exercise 2 Michael Rohs, LMU Praktikum Mediensysteme – iOS WS 2011 2

  3. Timeline # Date Topic 1 19.10.2011 Introduction and overview of iOS 2 26.10.2011 App architecture, touch input, saving data 3 2.11.2011 Location, networking, sensors 4 16.11.2011 Interviews, storyboarding; brainstorming 5 30.11.2011 Paper prototyping test, start of software prototype 6 14.12.2011 Heuristic evaluation of software prototype 7 11.1.2012 Think-aloud user study 8 25.1.2012 Completion of software prototype 9 1.2.2012 Final presentation Michael Rohs, LMU Praktikum Mediensysteme – iOS WS 2011 3

  4. Organization • 4 SWS • (Bi-)Weekly meetings – Wednesday 16:10 – 17:40 – Room 107, Amalienstraße 17 • Homepage: – http://www.medien.ifi.lmu.de/lehre/ws1112/pem/ Michael Rohs, LMU Praktikum Mediensysteme – iOS WS 2011 4

  5. iOS Developer Account ① University Account ② Send email, we invite you ③ Create certificate ④ Register as developer ⑤ We send provisioning profile Michael Rohs, LMU Praktikum Mediensysteme – iOS WS 2011 5

  6. Organization • UniWorX for individual exercises – https://uniworx.ifi.lmu.de • SVN for teamwork – SVN accounts for each team – svn://tracsvn.medien.ifi.lmu.de/repos/pem_team[number] (e.g. svn://tracsvn.medien.ifi.lmu.de/repos/pem_team1) Michael Rohs, LMU Praktikum Mediensysteme – iOS WS 2011 6

  7. “Hello World” Steps • Explain #pragma mark - • Showing a UIAlertView Michael Rohs, LMU Praktikum Mediensysteme – iOS WS 2011 8

  8. “Hello World” Steps • Action sheets – Implement UIActionSheetDelegate in .h file – Construct, showInView, release – Implement delegate method clickedButtonAtIndex Michael Rohs, LMU Praktikum Mediensysteme – iOS WS 2011 9

  9. “Hello World” Steps • Text input – Add UITextField in Interface Builder – Add member variable and property to .h, synthesize in .m – Declare UITextFieldDelegate in .h – Implement delegate methods in .m, set label text on end editing – Set delegate in viewDidLoad method Michael Rohs, LMU Praktikum Mediensysteme – iOS WS 2011 10

  10. Hello World Application Architecture MainWindow.xib: HelloWorldAppDelegate : UIApplication File’s Owner NSObject HelloWorldAppDelegate <UIApplicationDelegate> HelloWorldViewController UIWindow Window HelloWorldViewController : HelloWorldViewController.xib: UIViewController File’s Owner <UITextFieldDelegate, View UIActionSheetDelegate> Label Button … instantiates references A B A B Michael Rohs, LMU Praktikum Mediensysteme – iOS WS 2011 11

  11. HELLO TABLEVIEW Michael Rohs, LMU Praktikum Mediensysteme – iOS WS 2011 12

  12. UITableView Example • Create new project (“View-based application”) • Change controller base class to UITableViewController • Declare UITableViewDataSource, UITableViewDelegate • Add data array to header file, release data in dealloc • Change view in nib file to UITableView, connect File’s Owner (view, data source, delegate) • Create arrayWithObjects in onViewDidLoad • Implement table data source and delegate methods Michael Rohs, LMU Praktikum Mediensysteme – iOS WS 2011 13

  13. Table Views HelloTableViewController.xib: HelloTableViewViewController : File’s Owner UITableViewController TableView <UITableViewDataSource, UITableViewDelegate> UITableView instantiates references A B A B Michael Rohs, LMU Praktikum Mediensysteme – iOS WS 2011 14

  14. UIViewController subclasses • View lifecycle - (void)viewDidLoad - (void)viewDidUnload • View events - (void) viewWillAppear:(BOOL)animated - (void) viewWillDisappear:(BOOL)animated - (void) viewDidAppear:(BOOL)animated - (void) viewDidDisappear:(BOOL)animated • Rotation settings and events interfaceOrientation property – shouldAutorotateToInterfaceOrientation: • many more … à see documentation Michael Rohs, LMU Praktikum Mediensysteme – iOS WS 2011 15

  15. UITableViewDataSource (Protocol) • Configuring a Table View – tableView:cellForRowAtIndexPath: required method – numberOfSectionsInTableView: – tableView:numberOfRowsInSection: required method – sectionIndexTitlesForTableView: – tableView:sectionForSectionIndexTitle:atIndex: – tableView:titleForHeaderInSection: – tableView:titleForFooterInSection: • Inserting or Deleting Table Rows – tableView:commitEditingStyle:forRowAtIndexPath: – tableView:canEditRowAtIndexPath: • Reordering Table Rows – tableView:canMoveRowAtIndexPath: – tableView:moveRowAtIndexPath:toIndexPath: Michael Rohs, LMU Praktikum Mediensysteme – iOS WS 2011 16

  16. UITableViewDelegate (Protocol) • Configuring Rows for the Table View – tableView:heightForRowAtIndexPath: • Managing Accessory Views – tableView:accessoryButtonTappedForRowWithIndexPath: • Managing Selections – tableView:{will,did}SelectRowAtIndexPath: – tableView:{will,did}DeselectRowAtIndexPath: • Modifying the Header and Footer of Sections – tableView:viewFor{Header,Footer}InSection: – tableView:heightFor{Header,Footer}InSection: • Editing Table Rows • Reordering Table Rows Michael Rohs, LMU Praktikum Mediensysteme – iOS WS 2011 17

  17. HELLO MULTIVIEW Michael Rohs, LMU Praktikum Mediensysteme – iOS WS 2011 18

  18. View Navigation Example • Create a “Navigation-Based Application” • Add NSArray *data to RootViewController – Add some data in onViewLoad, retain! • New File … à UIViewController subclass (with nib file) à “MyDetailViewController” – Add UILabel to nib file and to .h file (IBOutlet, @property) and to .m file (@synthesize) • #import "MyDetailViewController.h” • Implement didSelectRowAtIndexPath, set selected item • Show that it does not work J à Debugger • Show that label is still nil à use member variable, set label in viewDidLoad Michael Rohs, LMU Praktikum Mediensysteme – iOS WS 2011 19

  19. View Navigation Example • Add back button: self.navigationItem.title = @"List"; Michael Rohs, LMU Praktikum Mediensysteme – iOS WS 2011 20

  20. MultiView Application Architecture MainWindow.xib: HelloMultiAppDelegate : UIApplication File’s Owner NSObject HelloMultiAppDelegate <UIApplicationDelegate> NavigationController UIWindow Window UINavigationBar UINavigationItem UINavigationController Navigation bar manages RootViewController.xib: stack of navigation items File’s Owner TableView UITableView RootViewController instantiates references A B A B Michael Rohs, LMU Praktikum Mediensysteme – iOS WS 2011 21

  21. Navigation Controller Views Source: http://developer.apple.com/library/ios/#documentation/uikit/reference/UINavigationController_Class/Reference/Reference.html Michael Rohs, LMU Praktikum Mediensysteme – iOS WS 2011 22

  22. Pushing a new View onto the View Stack • Loading and pushing the new view controller MyDetailViewController *d = [[MyDetailViewController alloc] initWithNibName:@"MyDetailViewController" bundle:nil]; d.labelText = [data objectAtIndex:indexPath.row]; [self.navigationController pushViewController:d animated:YES]; [d release]; Source: http://developer.apple.com/library/ios/#documentation/uikit/reference/UINavigationController_Class/Reference/Reference.html Michael Rohs, LMU Praktikum Mediensysteme – iOS WS 2011 23

  23. How to Exchange Data between Views • Set data before invoking new view controller MyDetailViewController *dvc = [[MyDetailViewController alloc] initWithNibName:@"MyDetailViewController" bundle:nil]; dvc.labelText = [data objectAtIndex:indexPath.row]; [self.navigationController pushViewController:dvc animated:YES]; • Use application delegate for “global” data #import "HelloMultiViewAppDelegate.h” … HelloMultiViewAppDelegate *delegate = [UIApplication sharedApplication].delegate; NSData *data = delegate.myGlobalData; Michael Rohs, LMU Praktikum Mediensysteme – iOS WS 2011 24

  24. Touch Input • Overwrite methods in UIView or UIImageView: - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { UITouch *touch = [touches anyObject]; CGPoint p = [touch locationInView:self]; traceCount = 0; trace[traceCount++] = p; [self updateDisplay]; } - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event; - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event; - (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event; Michael Rohs, LMU Praktikum Mediensysteme – iOS WS 2011 25

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend