입니다. ReactiveCocoa는 콜렉션보기의 가장자리를 맞추기 전에 더 많은 게시물을로드하는 컬렉션보기에서 App.net 게시물의 간단한 모음 인 ReactiveCocoa를 사용하여 작업했습니다.RACCommand 초기화 프로그램 신호가 실행되지 않습니다. 신호가
그러나 내보기 모델에 명령을 사용하는 데 문제가 있습니다. 나는 AFNetworking 클라이언트를 통해 게시물을로드하고 그들이 모델링 된 후에 응답하는 명령을 만들었습니다. 완료되면, 생성 된 명령에 대한 응답을 신호로 보내고 신호를 완료합니다.
self.loadPostsCommand = [[RACCommand alloc] initWithSignalBlock:^RACSignal *(id input) {
return [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
[[EPHTTPClient sharedClient] getGlobalTimelinePostsWithSuccess:^(NSURLSessionDataTask *task, id responseObject) {
[self.posts addObjectsFromArray:responseObject];
[subscriber sendNext:responseObject];
[subscriber sendCompleted];
} failure:^(NSURLSessionDataTask *task, NSError *error) {
[subscriber sendError:error];
}];
return nil;
}];
}];
필자는 나머지 게시물 수를 보내도록 신호를 작성합니다.
@weakify(self);
RACSignal *postsRemainingSignal = [[RACObserve(self.collectionView, contentOffset) map:^(id value) {
// The value returned from the signal will be an NSValue
CGPoint offset = [value CGPointValue];
NSNumber *postsPassed = @(floorf(offset.x/320) + 1);
return @([self.postQueue.posts count] - [postsPassed integerValue]);
}] distinctUntilChanged];
나는 내보기 모델에 따라 이러한 값을 보냅니다.
// Send the values of the posts to the view model
[postsRemainingSignal subscribeNext:^(id x) {
[self.postQueue.postsRemainingSubject sendNext:x];
}];
// When the load command is executed, update our view accordingly
[self.postQueue.loadPostsCommand.executionSignals subscribeNext:^(RACSignal *loadSignal) {
[loadSignal subscribeCompleted:^{
@strongify(self);
[self.collectionView reloadData];
}];
}];
뷰 모델의 대상은 같은 인스턴스화 예상대로
// Create a subject to send view values to
self.postsRemainingSubject = [RACSubject subject];
// Load more posts when less than 4 posts remain
[self.postsRemainingSubject subscribeNext:^(id x) {
if ([x integerValue] < 4) {
[self.loadPostsCommand execute:nil];
}
}];
모두는 내 명령의 신호 값과 완료를 보내는 제외하고 작동합니다. 네트워크 요청이 발생하면 내 게시물이 모델링되지만보기에는 self.postQueue.loadPostsCommand.executionSignals
신호에 대한 값이 수신되지 않습니다.
분기 다시로드 신호 재 작업에서 다시 my project is on GitHub. 이견있는 사람?
리포를 업데이트 할 수 있습니까? 나는 이것을 파고 들려고했지만 Repo에는이 질문과 다른 코드가 있습니다. –
여기에서 분기 reload-signal-rework를 확인하십시오. https://github.com/eliperkins/MVVMExample/tree/reload-signal-rework –
사과를 수락 할 수 없습니다. –