Weitere ähnliche Inhalte Ähnlich wie Formacion en movilidad: Conceptos de desarrollo en iOS (III) (20) Kürzlich hochgeladen (20) Formacion en movilidad: Conceptos de desarrollo en iOS (III) 3. Recursos
Tutoriales de Ray Wenderlich
www.raywenderlich.com/tutorials
Cursos de Stanford en iTunes U
itunes.stanford.edu
iOS Developer Library
developer.apple.com/library/ios
3
9. Repaso
// NewVideoViewController.m
- (IBAction)done:(id)sender {
! [self dismissViewControllerAnimated:YES completion:^{
! ! NSDictionary *values = @{
! ! ! @"title": self.videoTitle.text, @"author": self.videoAuthor.text, @"url": self.videoURL.text
! ! };
! ! [self.masterViewController insertNewObject:values];
! }];
}
9
10. Repaso
// MasterViewController.m
- (void)insertNewObject:(NSDictionary *)values
{
// ...
[newManagedObject setValue:[NSDate date] forKey:@"timeStamp"];
[newManagedObject setValue:[values objectForKey:@"title"] forKey:@"title"];
[newManagedObject setValue:[values objectForKey:@"author"] forKey:@"author"];
[newManagedObject setValue:[values objectForKey:@"url"] forKey:@"url"];
// ...
}
10
12. UIWebView
// DetailViewController.h
@interface DetailViewController : UIViewController <UISplitViewControllerDelegate, UIWebViewDelegate>
@property (strong, nonatomic) id detailItem;
@property (nonatomic, weak) IBOutlet UILabel *titleLabel;
@property (nonatomic, weak) IBOutlet UILabel *authorLabel;
@property (nonatomic, weak) IBOutlet UIWebView *webView;
@end
12
14. UIWebView
// DetailViewController.m
- (void)configureView
{
// ...
self.titleLabel.text = [self.detailItem valueForKey:@"title"];
self.authorLabel.text = [self.detailItem valueForKey:@"author"];
NSURL *theURL = [[NSURL alloc] initWithString:[self.detailItem valueForKey:@"url"]];
NSURLRequest *request = [[NSURLRequest alloc] initWithURL:theURL];
[self.webView loadRequest:request];
}
14
15. UIWebView
UIWebViewDelegate
// DetailViewController.m
- (void)configureView
{
// ...
self.titleLabel.text = [self.detailItem valueForKey:@"title"];
self.authorLabel.text = [self.detailItem valueForKey:@"author"];
NSURL *theURL = [[NSURL alloc] initWithString:[self.detailItem valueForKey:@"url"]];
NSURLRequest *request = [[NSURLRequest alloc] initWithURL:theURL];
[self.webView setDelegate:self];
[self.webView loadRequest:request];
}
15
16. UIWebView
UIWebViewDelegate
// DetailViewController.m
- (void)configureView
{
// ...
self.titleLabel.text = [self.detailItem valueForKey:@"title"];
self.authorLabel.text = [self.detailItem valueForKey:@"author"];
NSURL *theURL = [[NSURL alloc] initWithString:[self.detailItem valueForKey:@"url"]];
NSURLRequest *request = [[NSURLRequest alloc] initWithURL:theURL];
[self.webView setDelegate:self];
[self.webView loadRequest:request];
}
#pragma mark - UIWebViewDelegate
- (void)webViewDidStartLoad:(UIWebView *)webView {
}
- (void)webViewDidFinishLoad:(UIWebView *)webView {
}
16
17. UIWebView
UIActivityIndicatorView
// DetailViewController.h
@interface DetailViewController : UIViewController <UISplitViewControllerDelegate, UIWebViewDelegate>
@property (strong, nonatomic) id detailItem;
@property (nonatomic, weak) IBOutlet UILabel *titleLabel;
@property (nonatomic, weak) IBOutlet UILabel *authorLabel;
@property (nonatomic, weak) IBOutlet UIWebView *webView;
@property (nonatomic, strong) IBOutlet UIActivityIndicatorView *spinner;
@end
17
18. UIWebView
UIActivityIndicatorView
// DetailViewController.m
- (void)configureView
{
// ...
self.titleLabel.text = [self.detailItem valueForKey:@"title"];
self.authorLabel.text = [self.detailItem valueForKey:@"author"];
self.spinner =
[[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
self.spinner.center = self.view.center;
NSURL *theURL = [[NSURL alloc] initWithString:[self.detailItem valueForKey:@"url"]];
NSURLRequest *request = [[NSURLRequest alloc] initWithURL:theURL];
[self.webView setDelegate:self];
[self.webView loadRequest:request];
}
#pragma mark - UIWebViewDelegate
- (void)webViewDidStartLoad:(UIWebView *)webView {
}
- (void)webViewDidFinishLoad:(UIWebView *)webView {
}
18
19. UIWebView
UIActivityIndicatorView
// DetailViewController.m
- (void)configureView
{
// ...
self.titleLabel.text = [self.detailItem valueForKey:@"title"];
self.authorLabel.text = [self.detailItem valueForKey:@"author"];
self.spinner =
[[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
self.spinner.center = self.view.center;
NSURL *theURL = [[NSURL alloc] initWithString:[self.detailItem valueForKey:@"url"]];
NSURLRequest *request = [[NSURLRequest alloc] initWithURL:theURL];
[self.webView setDelegate:self];
[self.webView loadRequest:request];
}
#pragma mark - UIWebViewDelegate
- (void)webViewDidStartLoad:(UIWebView *)webView {
dispatch_async(dispatch_get_main_queue(), ^{
});
}
- (void)webViewDidFinishLoad:(UIWebView *)webView {
}
19
20. UIWebView
UIActivityIndicatorView
// DetailViewController.m
- (void)configureView
{
// ...
self.titleLabel.text = [self.detailItem valueForKey:@"title"];
self.authorLabel.text = [self.detailItem valueForKey:@"author"];
self.spinner =
[[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
self.spinner.center = self.view.center;
NSURL *theURL = [[NSURL alloc] initWithString:[self.detailItem valueForKey:@"url"]];
NSURLRequest *request = [[NSURLRequest alloc] initWithURL:theURL];
[self.webView setDelegate:self];
[self.webView loadRequest:request];
}
#pragma mark - UIWebViewDelegate
- (void)webViewDidStartLoad:(UIWebView *)webView {
dispatch_async(dispatch_get_main_queue(), ^{
[self.view addSubview:self.spinner];
[self.spinner startAnimating];
});
}
- (void)webViewDidFinishLoad:(UIWebView *)webView {
}
20
21. UIWebView
UIActivityIndicatorView
// DetailViewController.m
- (void)configureView
{
// ...
self.titleLabel.text = [self.detailItem valueForKey:@"title"];
self.authorLabel.text = [self.detailItem valueForKey:@"author"];
self.spinner =
[[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
self.spinner.center = self.view.center;
NSURL *theURL = [[NSURL alloc] initWithString:[self.detailItem valueForKey:@"url"]];
NSURLRequest *request = [[NSURLRequest alloc] initWithURL:theURL];
[self.webView setDelegate:self];
[self.webView loadRequest:request];
}
#pragma mark - UIWebViewDelegate
- (void)webViewDidStartLoad:(UIWebView *)webView {
dispatch_async(dispatch_get_main_queue(), ^{
[self.view addSubview:self.spinner];
[self.spinner startAnimating];
});
}
- (void)webViewDidFinishLoad:(UIWebView *)webView {
dispatch_async(dispatch_get_main_queue(), ^{
});
}
21
22. UIWebView
UIActivityIndicatorView
// DetailViewController.m
- (void)configureView
{
// ...
self.titleLabel.text = [self.detailItem valueForKey:@"title"];
self.authorLabel.text = [self.detailItem valueForKey:@"author"];
self.spinner =
[[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
self.spinner.center = self.view.center;
NSURL *theURL = [[NSURL alloc] initWithString:[self.detailItem valueForKey:@"url"]];
NSURLRequest *request = [[NSURLRequest alloc] initWithURL:theURL];
[self.webView setDelegate:self];
[self.webView loadRequest:request];
}
#pragma mark - UIWebViewDelegate
- (void)webViewDidStartLoad:(UIWebView *)webView {
dispatch_async(dispatch_get_main_queue(), ^{
[self.view addSubview:self.spinner];
[self.spinner startAnimating];
});
}
- (void)webViewDidFinishLoad:(UIWebView *)webView {
dispatch_async(dispatch_get_main_queue(), ^{
[self.spinner stopAnimating];
[self.spinner removeFromSuperview];
});
}
22
25. MVC
View Controller Lifecycle
viewDidLoad:
“This method is called after the view controller has loaded its view hierarchy into memory.
You usually override this method to perform additional
initialization on views that were loaded from nib files”
- (void)viewDidLoad
{
[super viewDidLoad];
self.spinner =
[[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
self.spinner.center = self.view.center;
}
25
26. MVC
View Controller Lifecycle
viewWillAppear:
“This method is called before the receiver’s view is about to be added to a view hierarchy.
You can override this method to perform custom tasks
associated with displaying the view”
- (void)viewDidLoad
{
[super viewDidLoad];
self.spinner =
[[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
self.spinner.center = self.view.center;
}
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
self.titleLabel.text = [self.detailItem valueForKey:@"title"];
self.authorLabel.text = [self.detailItem valueForKey:@"author"];
}
26
27. MVC
View Controller Lifecycle
viewDidAppear:
“You can override this method to perform additional
tasks associated with presenting the view”
- (void)viewDidLoad
{
[super viewDidLoad];
self.spinner =
[[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
self.spinner.center = self.view.center;
}
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
self.titleLabel.text = [self.detailItem valueForKey:@"title"];
self.authorLabel.text = [self.detailItem valueForKey:@"author"];
}
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
NSURL *theURL = [[NSURL alloc] initWithString:[self.detailItem valueForKey:@"url"]];
NSURLRequest *request = [[NSURLRequest alloc] initWithURL:theURL];
[self.webView setDelegate:self];
[self.webView loadRequest:request];
}
27
31. iOS Simulator
Hardware
Device
iPad 2, mini
iPad (Retina)
iPhone 3G, 3GS
iPhone (Retina 3.5-inch) 4, 4S
iPhone (Retina 4-inch) 5, iPod Touch
Version
5.0 (9A334) WWDC 2011
5.1 (9B176)
6.0 (10A403) WWDC 2012
6.1 (10B141)
31
34. iOS Simulator
Hardware
Simulate Memory Warning didReceiveMemoryWarning:
Toggle In-Call Status Bar ⌘T
Simulate Hardware Keyboard
TV Out
Disabled
640 x 480
720 x 480
1024 x 768
1280 x 720 (720p)
1920 x 1024 (1080p)
34