-
Notifications
You must be signed in to change notification settings - Fork 19
/
DetailViewController.m
104 lines (87 loc) · 3.15 KB
/
DetailViewController.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
//
// DetailViewController.m
// MPMediaLibraryExample
//
// Created by Indragie Karunaratne on 2012-08-27.
// Copyright (c) 2012 Indragie Karunaratne. All rights reserved.
//
#import "DetailViewController.h"
#import "SNRMusicKitiOS.h"
#import "SMKMPMediaContentSource.h"
#import "SMKMPMusicPlayer.h"
#import "SMKQueueController.h"
@interface DetailViewController ()
@property (strong, nonatomic) UIPopoverController *masterPopoverController;
@property (nonatomic, strong) NSArray *tracks;
- (void)configureView;
@end
@implementation DetailViewController {
SMKQueueController *_controller;
}
#pragma mark - Managing the detail item
- (void)setDetailItem:(id)newDetailItem
{
if (_detailItem != newDetailItem) {
_detailItem = newDetailItem;
[self configureView];
}
if (self.masterPopoverController != nil) {
[self.masterPopoverController dismissPopoverAnimated:YES];
}
}
- (void)configureView
{
__weak DetailViewController *weakSelf = self;
[self.detailItem fetchTracksWithCompletionHandler:^(NSArray *tracks, NSError *error) {
DetailViewController *strongSelf = weakSelf;
strongSelf.tracks = tracks;
[self.tableView reloadData];
}];
}
- (void)viewDidLoad
{
[super viewDidLoad];
[self configureView];
}
#pragma mark - Table view
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return self.tracks.count;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"DetailCell" forIndexPath:indexPath];
SMKMPMediaTrack *object = self.tracks[indexPath.row];
cell.textLabel.text = [object name];
cell.detailTextLabel.text = [object artistName];
return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSArray *array = [self.tracks subarrayWithRange:NSMakeRange(indexPath.row, [self.tracks count] - indexPath.row)];
NSLog(@"%@", array);
_controller = [SMKQueueController queueControllerWithTracks:array];
[_controller play:nil];
}
#pragma mark - Split view
- (void)splitViewController:(UISplitViewController *)splitController willHideViewController:(UIViewController *)viewController withBarButtonItem:(UIBarButtonItem *)barButtonItem forPopoverController:(UIPopoverController *)popoverController
{
barButtonItem.title = NSLocalizedString(@"Master", @"Master");
[self.navigationItem setLeftBarButtonItem:barButtonItem animated:YES];
self.masterPopoverController = popoverController;
}
- (void)splitViewController:(UISplitViewController *)splitController willShowViewController:(UIViewController *)viewController invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem
{
// Called when the view is shown again in the split view, invalidating the button and popover controller.
[self.navigationItem setLeftBarButtonItem:nil animated:YES];
self.masterPopoverController = nil;
}
- (IBAction)seekForward:(id)sender
{
[_controller seekForward:nil];
}
@end