코드를 스캔하도록 컨트롤러를 밀어 넣은 컨트롤러 A가 있습니다. 코드가 스캔되면 델리게이트를 사용하여 문자열을 컨트롤러 A로 다시 보냅니다. 바로 후에 스캔 컨트롤러가 팝업됩니다. 그 순간 아무 문제 없습니다.델리게이트가 값을 보내고 팝 컨트롤러를 보냅니다.
하지만 컨트롤러 A의 대리인에서 결과를 확인하고이 데이터를 사용해야합니다. 경우에 따라 다른 컨트롤러 B를 밀어야합니다. 이것은 작동하지 않습니다. 화면은 스캔 컨트롤러에 그대로 있으며 1 초 이하로 깜박입니다.
내가 이해 한대로, 대리자가 스캔 컨트롤러가 화면에있는 동안 컨트롤러 B를 누른 다음이 스캔 컨트롤러 호출 팝업.
나는이 내 스캔 컨트롤러에 있습니다
if ([self.delegate respondsToSelector:@selector(QrcodeHasFound:)]) {
[self.delegate QrcodeHasFound:[metadataObj stringValue]];
}
[self.navigationController performSelectorOnMainThread:@selector(popViewControllerAnimated:) withObject:nil waitUntilDone:NO];
그리고이 내 대리자 :
- (void)QrcodeHasFound:(NSString *)value{
// do some data use
ArticleController *mController = [self.storyboard instantiateViewControllerWithIdentifier:@"articleController"];
[self.navigationController pushViewController:mController animated:YES];
}
어떻게이 문제를 해결해야합니까?
코드를 사용하면 더 이상 화면이 깜박 거리지 않고 대리자가 컨트롤러 B를 호출하지만 스캔 컨트롤러로 직접 다시 팝된다는 것을 알 수 있습니다. 만약 내가 처음으로 popViewControllerAnimated 가지고 대리인을 호출하는 두 줄을 반전, 잘 작동하고 있습니다. 그러나 이후에 대의원에게 전화하는 것이 안전한지 여부는 알 수 없습니다. – Kamax
완벽하게 안전합니다. 주문에 대한 좋은 관찰 - 두 번째 문제가 해결되어 기쁘다. –