-
Notifications
You must be signed in to change notification settings - Fork 494
/
PSTCollectionViewController.m
98 lines (78 loc) · 3.09 KB
/
PSTCollectionViewController.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
//
// PSTCollectionViewController.m
// PSPDFKit
//
// Copyright (c) 2012 Peter Steinberger. All rights reserved.
//
#import "PSTCollectionViewController.h"
#import "PSTCollectionView.h"
@interface PSTCollectionViewController () {
struct {
unsigned int clearsSelectionOnViewWillAppear:1;
} _collectionViewControllerFlags;
}
@property (nonatomic, strong) PSTCollectionViewLayout* layout;
@property (nonatomic, assign) BOOL appearsFirstTime;
@end
@implementation PSTCollectionViewController
///////////////////////////////////////////////////////////////////////////////////////////
#pragma mark - NSObject
- (id)initWithCollectionViewLayout:(PSTCollectionViewLayout *)layout {
if((self = [super init])) {
self.layout = layout;
self.clearsSelectionOnViewWillAppear = YES;
self.appearsFirstTime = YES;
}
return self;
}
///////////////////////////////////////////////////////////////////////////////////////////
#pragma mark - UIViewController
- (void)awakeFromNib {
[super awakeFromNib];
if (_collectionView.delegate == nil) _collectionView.delegate = self;
if (_collectionView.dataSource == nil) _collectionView.dataSource = self;
}
- (void)loadView {
[super loadView];
// if this is restored from IB, we don't have plain main view.
if ([self.view isKindOfClass:[PSTCollectionView class]]) {
_collectionView = (PSTCollectionView *)self.view;
}
// only create the collection view if it is not already created (by IB)
if (!_collectionView) {
self.collectionView = [[PSTCollectionView alloc] initWithFrame:self.view.bounds collectionViewLayout:self.layout];
[self.view addSubview:self.collectionView];
self.collectionView.delegate = self;
self.collectionView.dataSource = self;
}
}
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
if (_appearsFirstTime) {
[_collectionView reloadData];
self.appearsFirstTime = NO;
}
if (_collectionViewControllerFlags.clearsSelectionOnViewWillAppear) {
for (NSIndexPath* aIndexPath in [[_collectionView indexPathsForSelectedItems] copy]) {
[_collectionView deselectItemAtIndexPath:aIndexPath animated:animated];
}
}
}
///////////////////////////////////////////////////////////////////////////////////////////
#pragma mark - Properties
- (void)setClearsSelectionOnViewWillAppear:(BOOL)clearsSelectionOnViewWillAppear {
_collectionViewControllerFlags.clearsSelectionOnViewWillAppear = clearsSelectionOnViewWillAppear;
}
- (BOOL)clearsSelectionOnViewWillAppear {
return _collectionViewControllerFlags.clearsSelectionOnViewWillAppear;
}
///////////////////////////////////////////////////////////////////////////////////////////
#pragma mark - PSTCollectionViewDataSource
- (NSInteger)collectionView:(PSTCollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
return 0;
}
- (PSTCollectionViewCell *)collectionView:(PSTCollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
[self doesNotRecognizeSelector:_cmd];
return nil;
}
@end