2015-05-15 2 views
0

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

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

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

Спасибо. Имран.

ответ

1

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

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

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

+0

Привет, спасибо за ответы, но у меня есть некоторые сомнения. Как насчет prepareForSugue, performSegueWithIdentifier и т. Д. –

0

Я работал над этим, но это определенно НЕ сразу видно. Мне пришлось прорыть исходный код. 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 
Смежные вопросы