문제

나는 (~ 45) UIViewControllers의로드가있는 스토리 보드 앱이 있습니다. 백그라운드 또는 전경에서 비콘이 UILOCALNOTIFICATION을 트리거하고 사용자가 동의하는 경우, 비콘 트리거와 연관된 UIViewController에 "푸시 / Segue"를 원합니다. 충분히 간단합니다. 비콘에 따라 약 10 개의 다른 VC가 있습니다.

내가 가진 질문은 이것입니다. 사용자는 내 45 uiviewtrlers가 알림을 트리거 할 때 내 45 개의 UIViewCtrlers 중 하나에 앉아있을 수 있습니다. 그래서 내 UIViewControllers 중 하나가 아래와 비슷한 것을 가져야합니다 (선택기의 코드 블록과 함께). 통지 및 다른 ViewController 로의 통지 및 푸시 / 세그 슈.

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(showFoodMenuViewNow)
                                             name:@"showfoodmenu" object:nil];
.

이것은 문자 그대로 스틱을 흔들어 볼 수있는 것보다 더 많은 인터내셔널 푸시 / 세그 슈 연결을 통해 내 스토리 보드를 수수롭게합니다. 매우 지저분 해. 모든 시각적 스토리 보드 세그 웁을 제거하거나 어떻게 든 모든 뷰가 SEGUE를 제공하는 단일 '벡터 ViewController'를 소개하는 방법이 있습니다. 그런 다음 VC는 LocalNotification을 평가하고 연결된 VC로 눌러줍니다.

이 작업을 관리하기위한 권장 모범 사례는 무엇입니까?

나는 의미가 있기를 바랍니다.

업데이트 :

이제 경로를 전환하여 AppDelegate에서 직접 UINAvigationController에 액세스하려고합니다. 나는 다음 코드를 사용하여 그렇게하고, 내 NC가 nil이 아니지만보기가 푸시되지 않습니다 ...

이 코드는 원하는 ViewController를 누르지 않을 것인가?

UIStoryboard *sb = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
nm_vcFoodMenu *fm = [sb instantiateViewControllerWithIdentifier:@"foodmenu"];
UINavigationController *nc = [sb instantiateViewControllerWithIdentifier:@"myNavController"];
if (nc == nil){
    NSLog(@"nc is nil");
} else {
    NSLog(@"nc is not nil so trying to push to foodmenu");
    [nc pushViewController:(nm_vcFoodMenu *)fm  animated:YES];
}
.

이것은 내 스토리 보드와 다양한 움직이는 부분을 묘사합니다. 이것이 당신이 나를 도울 수 있기를 바랍니다! 여기에 이미지 설명

감사합니다.

도움이 되었습니까?

해결책

나는 이것에 대한 좋은 해결책을 주장하지는 않지만 아래는 그것이 가치있는 것에 대해 내가하는 일입니다. 아무도 더 나은 해결책을 가지고 있는지 듣고 싶습니다.

  1. 스토리 보드의 설정없이 AppDelegate에서 iBeacon을 프로그래밍 방식으로 프로그래밍 방식으로 관리합니다.

  2. 두 개의 iBeacons 두 개의 전환이 서로가 너무 밀접하게 두 번 전환하지 않아도됩니다 (마지막 전환 이후의 최소한은 몇 초가 지나가야합니다. 그렇지 않으면 타이머로 전환을 지연 시키거나 억제합니다. 그것.)

  3. 네비게이션 컨트롤러에서 스택을 관리하는 것은 실제 고통입니다. 사용자가 사용자가 돌아갈 수 있기를 원한다는 사례에서만 내가 [navigationController pushViewController:newViewController animated:YES]를 수행 할 수 있습니다. 그리고 어떤 경우에는 ViewController가있는 내 [self.navigationController setNavigationBarHidden:YES animated:YES];에서 뒤로 버튼을 억제하는 것을 억제합니다

  4. 틀림 없이이 모든 것은 정말로 지저분합니다. 그러나 iBeacon 기반 전환이 어떻게 일어날 수 있는지에 대한 역동적 인 특성을 감안할 때, 나는 그것이 미리 모든 조합을 설정하기가 어렵다고 생각합니다.

다른 팁

프로젝트에서는 iBeacon 대리자로 재생되는 전용 싱글 톤을 만들고, 상위 뷰 컨트롤러에 대한 알림 인터페이스를 제시하므로 모든 논리는 한 곳에서 포함되어 있으며 다른 뷰 컨트롤러에서 수정할 필요가 없습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top