runtime 을 사용 하여 weex 가 원생 페이지 로 이동 합 니 다.
최근 프로젝트 팀 은 weex 를 도입 할 계획 이 며,한 페이지 를 선정 하여 시험 수 를 진행 할 계획 이다.페이지 는 매우 간단 합 니 다.주로 데이터 렌 더 링 페이지 를 가 져 오고 지정 한 페이지 로 이동 할 수 있 습 니 다.이전에 RN 을 사 용 했 던 것 에 비해 weex 는 확실히 매우 간단 하 다.아래 그림 에서 볼 수 있 듯 이 weex 페이지 는 원생 페이지 로 넘 어가 야 하고 어느 페이지 로 넘 어가 야 하 는 지 우 리 는 죽 을 수 없습니다.즉,네 이 티 브 페이지 이전 프로젝트 에 적 혀 있 으 면 이론 적 으로 weex 를 사용 하면 임의로 호출 할 수 있다 는 것 이다.그럼 문제 가 생 겼 습 니 다.제 원래 페이지 는 이름 만 알 고 있 을 수도 있 습 니 다.제 가 어떻게 그 페이지 에 값 을 전달 합 니까?예 를 들 어 페이지 orderDetailVC 가 있 습 니 다. ,이동 할 때 orderId,즉 orderDetailVC.orderId=@"123"을 입력 해 야 합 니 다.
사고
아마도 가장 직접적인 생각 은 바로 원생 이 weex 에 게 하나의 방법 을 제공 하여 weex 가 orderId 에 들 어가 게 한 다음 에 push 를 하 는 것 일 것 이다.하지만 내일 다른 페이지 로 넘 어가 야 한다 면 merchant DetailVC 는?그것 에 필요 한 것 은 orderId 가 아 닙 니 다.아마도 merchantId 일 것 입 니 다.심지어 더 많은 인자 일 것 입 니 다.그럼 어떻게 하면 임의의 점프 를 실현 할 수 있 습 니까?제 생각 은 프로젝트 는 제 가 쓴 것 입 니 다.어떤 종류 로 넘 어가 야 하 는 지 잘 알 고 있 습 니 다.그리고 이런 종류 에 어떤 인자 가 필요 한 지 저도 잘 알 고 있 습 니 다.다만 나 는 weex 로 그 인 자 를 어떻게 전달 해 야 할 지 모 를 뿐이다.만약 에 유형 명 을 알 게 된다 면 나 는 이런 종 류 를 알 게 되 었 다 는 것 을 의미한다.나 는 이런 종류 가 어떤 속성 이 있 는 지 알 게 될 것 이다.이런 종류의 모든 속성 을 나 는 모두 얻 을 수 있다.단지 어떤 것 은 내 가 그것 에 값 을 부여 해 야 하고 어떤 것 은 처리 할 필요 가 없다.
실현
전체적인 사고방식 은 원생 이 weex 에 통용 되 는 점프 방법 을 제공 하 는 것 이다.매개 변 수 는 클래스 이름과 속성 사전 입 니 다.
//
/*
vcName:
param: ( id, , ,key 。
*/
-(void)pushViewController:(NSString *)vcName param:(NSDictionary *)param;
/*
APP pop
*/
-(void)popViewController;
/*
vcName:
param: ( id, , ,key 。
*/
-(void)presentViewController:(NSString *)vcName param:(NSDictionary *)param finish:(WXModuleCallback)callback;
/*
APP dismiss
*/
-(void)dismissViewController:(WXModuleCallback)callback;
방법 을 제공 한 후 weex 는 이렇게 호출 할 수 있 습 니 다:방안 을 확정 한 후에 남 은 유일한 일 은 weex 에 제공 하 는 방법 을 어떻게 실현 하 느 냐 하 는 것 이다.코드 는 다음 과 같 습 니 다:
-(void)pushViewController:(NSString *)vcName param:(NSDictionary *)param{
//
Class vcClass = NSClassFromString(vcName);
if (vcClass == nil) {
return;
}
BaseViewController *vc = [[vcClass alloc] init];
vc.hidesBottomBarWhenPushed = YES;
//
unsigned int count = 0;
//
objc_property_t *plist = class_copyPropertyList(vcClass, &count);
for (int i = 0; i<count; i++) {
//
objc_property_t property = plist[i];
//
NSString *propertyName = [NSString stringWithUTF8String:property_getName(property)];
// key , value
if (param[propertyName]) {
[vc setValue:param[propertyName] forKey:propertyName];
}
}
//
free(plist);
//
/*
。
*/
UIViewController *currentVC = [Utils getCurrentVC];
if ([currentVC isKindOfClass:[UINavigationController class]]) {
[(UINavigationController *)currentVC pushViewController:vc animated:YES];
}else{
[currentVC.navigationController pushViewController:vc animated:YES];
}
}
소 규모 자체 측정 을 통 해 수 요 를 실현 할 수 있다 는 것 을 발견 하 였 다.하지만 실현 기간 이 길지 않 아 부족 한 점 이 있 을 수 있 으 니 참고 하 시기 바 랍 니 다.궁금 한 점 이 있 으 시 면 메 시 지 를 남 겨 주세요.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bun - Node 및 Deno보다 빠른 Javascript 런타임은 처음부터 새로 작성된 JavaScript 런타임으로 node 및 deno보다 빠릅니다. Bun은 아직 베타 단계에 있습니다. V8 엔진을 사용하는 node 및 deno와 달리 bun은 일반적으로 더 빠르고 메모리...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.