mirror of
https://github.com/tappollo/IGListKit.git
synced 2026-06-13 00:18:47 +08:00
Add Example-iOS in ObjC
Summary: Related issue: [#425](https://github.com/Instagram/IGListKit/issues/425) - [ ] All tests pass. Demo project builds and runs. - [ ] I added tests, an experiment, or detailed why my change isn't tested. - [ ] I added an entry to the `CHANGELOG.md` for any breaking changes, enhancements, or bug fixes. - [ ] I have reviewed the [contributing guide](https://github.com/Instagram/IGListKit/blob/master/.github/CONTRIBUTING.md) Closes https://github.com/Instagram/IGListKit/pull/446 Differential Revision: D4589989 Pulled By: rnystrom fbshipit-source-id: df91f10e0896dfe2f39a643f68e7ebd91e8461cb
This commit is contained in:
committed by
Facebook Github Bot
parent
640b67ebb4
commit
1f33a77412
@@ -37,6 +37,7 @@ final class DemosViewController: UIViewController, IGListAdapterDataSource {
|
||||
DemoItem(name: "Self-sizing cells", controllerClass: SelfSizingCellsViewController.self),
|
||||
DemoItem(name: "Display delegate", controllerClass: DisplayViewController.self),
|
||||
DemoItem(name: "Stacked Section Controllers", controllerClass: StackedViewController.self),
|
||||
DemoItem(name: "Objc Demo", controllerClass: ObjcDemoViewController.self)
|
||||
]
|
||||
|
||||
override func viewDidLoad() {
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
/**
|
||||
Copyright (c) 2016-present, Facebook, Inc. All rights reserved.
|
||||
|
||||
The examples provided by Facebook are for non-commercial testing and evaluation
|
||||
purposes only. Facebook reserves all rights not expressly granted.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
|
||||
ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#import "ObjcDemoViewController.h"
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
/**
|
||||
Copyright (c) 2016-present, Facebook, Inc. All rights reserved.
|
||||
|
||||
The examples provided by Facebook are for non-commercial testing and evaluation
|
||||
purposes only. Facebook reserves all rights not expressly granted.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
|
||||
ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
@interface ObjcDemoViewController : UIViewController
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,133 @@
|
||||
/**
|
||||
Copyright (c) 2016-present, Facebook, Inc. All rights reserved.
|
||||
|
||||
The examples provided by Facebook are for non-commercial testing and evaluation
|
||||
purposes only. Facebook reserves all rights not expressly granted.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
|
||||
ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#import "ObjcDemoViewController.h"
|
||||
#import <IGListKit/IGListKit.h>
|
||||
|
||||
#import "UserInfoSectionController.h"
|
||||
#import "ImageSectionController.h"
|
||||
#import "InteractiveSectionController.h"
|
||||
#import "CommentSectionController.h"
|
||||
|
||||
#import "UserInfo.h"
|
||||
#import "PhotoCell.h"
|
||||
|
||||
@interface ObjcDemoViewController () <IGListAdapterDataSource>
|
||||
@property (nonatomic, strong) IGListCollectionView *collectionView;
|
||||
@property (nonatomic, strong) IGListAdapter *adapter;
|
||||
@property (nonatomic, strong) NSArray *data;
|
||||
@end
|
||||
|
||||
@implementation ObjcDemoViewController
|
||||
|
||||
- (void)viewDidLoad {
|
||||
[super viewDidLoad];
|
||||
[self setupUI];
|
||||
}
|
||||
|
||||
- (void)viewDidLayoutSubviews {
|
||||
[super viewDidLayoutSubviews];
|
||||
self.collectionView.frame = self.view.bounds;
|
||||
}
|
||||
|
||||
- (void)didReceiveMemoryWarning {
|
||||
[super didReceiveMemoryWarning];
|
||||
}
|
||||
|
||||
#pragma mark - setupUI
|
||||
|
||||
- (void)setupUI {
|
||||
|
||||
[self.view addSubview:self.collectionView];
|
||||
|
||||
self.adapter.collectionView = self.collectionView;
|
||||
self.adapter.dataSource = self;
|
||||
}
|
||||
|
||||
#pragma mark - IGListAdapterDataSource
|
||||
|
||||
- (NSArray<id<IGListDiffable>> *)objectsForListAdapter:(IGListAdapter *)listAdapter {
|
||||
return self.data;
|
||||
}
|
||||
|
||||
- (IGListSectionController<IGListSectionType> *)listAdapter:(IGListAdapter *)listAdapter sectionControllerForObject:(id)object {
|
||||
if ([object isKindOfClass:[NSString class]]) {
|
||||
if ([object isEqualToString:@"Image-Placeholder-String"]) {
|
||||
return [[ImageSectionController alloc] init];
|
||||
} else if ([object length]) {
|
||||
return [[CommentSectionController alloc] init];
|
||||
} else {
|
||||
return [[InteractiveSectionController alloc] init];
|
||||
}
|
||||
} else {
|
||||
return [[UserInfoSectionController alloc] init];
|
||||
}
|
||||
}
|
||||
|
||||
- (UIView *)emptyViewForListAdapter:(IGListAdapter *)listAdapter {
|
||||
return nil;
|
||||
}
|
||||
|
||||
#pragma mark - Custom Accessors
|
||||
|
||||
- (IGListAdapter *)adapter {
|
||||
if (!_adapter) {
|
||||
_adapter = [[IGListAdapter alloc] initWithUpdater:[[IGListAdapterUpdater alloc] init]
|
||||
viewController:self
|
||||
workingRangeSize:0];
|
||||
}
|
||||
return _adapter;
|
||||
}
|
||||
|
||||
- (IGListCollectionView *)collectionView {
|
||||
if (!_collectionView) {
|
||||
UICollectionViewLayout *layout = [[UICollectionViewFlowLayout alloc] init];
|
||||
_collectionView = [[IGListCollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout];
|
||||
}
|
||||
return _collectionView;
|
||||
}
|
||||
|
||||
- (NSArray *)data {
|
||||
if (!_data) {
|
||||
UserInfo *userA = [[UserInfo alloc] initWithName:@"userA"];
|
||||
UserInfo *userB = [[UserInfo alloc] initWithName:@"userB"];
|
||||
UserInfo *userC = [[UserInfo alloc] initWithName:@"userC"];
|
||||
UserInfo *userD = [[UserInfo alloc] initWithName:@"userD"];
|
||||
|
||||
_data = @[userA,
|
||||
@"Image-Placeholder-String",
|
||||
@"", @"Luminous triangle",
|
||||
@"Awesome",
|
||||
@"Super clean",
|
||||
@"Stunning shot",
|
||||
userB,
|
||||
@"Image-Placeholder-String",
|
||||
@"",
|
||||
@"The simplicity here is superb",
|
||||
@"thanks!", @"That's always so kind of you!",
|
||||
@"I think you might like this",
|
||||
userC,
|
||||
@"Image-Placeholder-String",
|
||||
@"",
|
||||
@"So good comment",
|
||||
userD,
|
||||
@"Image-Placeholder-String",
|
||||
@"",
|
||||
@"hope she might like it.",
|
||||
@"I love it."];
|
||||
}
|
||||
return _data;
|
||||
}
|
||||
|
||||
@end
|
||||
Reference in New Issue
Block a user