ComponentKit, как контроллеры push view CKComponentController

Привет только что заявил, чтобы использовать ComponentKit библиотека предоставлена ​​из фейсбука и я просматривал всю их документацию но не смог найти как их использовать CKComponentController учебный класс.

Как то, как нажать контроллер представления и о навигации различных контроллеров представления.

если кто-либо из вас знает, как использовать CKComponentController пожалуйста, дайте мне знать, что я немного застрял из-за меньшего количества документации

Благодарю вас. Имран.

2 ответа

Наш обычный подход - передать объект со слабой ссылкой на контроллер навигации как объект "контекста", который передается компоненту верхнего уровня.

Убедитесь, что это слабая ссылка, иначе у вас останется цикл сохранения!

Что касается доступа к нему в контроллере компонента, предоставьте объект контекста как свойство вашего компонента, а затем прочитайте это свойство из self.component,

Я решил это, но это определенно НЕ сразу очевидно. Мне пришлось копаться в исходном коде. StoryViewController расширяет UIViewController.

@interface StoryViewController () <
CKComponentProvider,
CKComponentHostingViewDelegate
>

@end

@implementation StoryViewController {
    CKComponentDataSource *_componentDataSource;
    CKComponentFlexibleSizeRangeProvider *_sizeRangeProvider;
}

- (void)viewDidLoad {
    _sizeRangeProvider = [CKComponentFlexibleSizeRangeProvider providerWithFlexibility:CKComponentSizeRangeFlexibleHeight];
    CKComponentHostingView *hostingView = [[CKComponentHostingView alloc] initWithComponentProvider:[self class]
                                                                                  sizeRangeProvider:_sizeRangeProvider
                                                                                            context:nil];
    hostingView.delegate = self;
    hostingView.model = self.story;

    CGSize size = [hostingView sizeThatFits:CGSizeMake(self.view.frame.size.width, FLT_MAX)];
    hostingView.frame = CGRectMake(0, 0, size.width, size.height);
    [self.view addSubview:hostingView];

}

#pragma mark - CKComponentProvider

+ (CKComponent *)componentForModel:(id<NSObject>)story context:(id<NSObject>)context {
    return [StoryComponent newWithStory:story context:nil];
}

#pragma mark - CKComponentHostingViewDelegate <NSObject>
- (void)componentHostingViewDidInvalidateSize:(CKComponentHostingView *)hostingView {
    NSLog(@"componentHostingViewDidInvalidateSize");

}

@end
Другие вопросы по тегам