2016-10-27 3 views
0

내 응용 프로그램에서 UIViewController "ProfilVC"은 UINavigationController "nav"의 일부입니다.현재 UIViewController가 UINavigationController의 일부인지 확인하는 방법

하지만 다른 장면에서는 을 제시하여 "ProfilVC"을 사용하여 동일한 데이터를 재사용 할 수 있지만 다른 데이터를 사용합니다. didSelectRowAt

let vc = tweetsStb.instantiateViewController(withIdentifier: "ProfilVC") as! ProfilVC 
self.present(vc, animated: true, completion: nil) 

, 나는 또 다른 UIViewController을 제시하고있다. 그리고 여기에서 self (ProfilVC)이 현재 nav의 일부인지 또는 맨 위에 표시되는지 확인해야합니다. ProfilVCnav의 일부인 경우

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 

    let vc = tweetsStb.instantiateViewController(withIdentifier: "TweetCommentsVC") as! TweetCommentsVC 
    let post = tweets[(indexPath as NSIndexPath).section] 
    let cell = tableView.cellForRow(at: indexPath) as! TweetPostCell 
    vc.commentCounterString = cell.commentLabel.text! 
    vc.post = post 
    vc.avatare = avatare 
    nav?.present(vc, animated: true, completion: nil) 
} 

이 코드는 완벽하게 작동합니다.

ProfilVC이 맨 위에 표시되면 self.present(vc, animated: true, completion: nil)이 필요합니다. ProfilVC 항상 nav의 일부임을,

if(nav?.topViewController?.isKind(of: ProfilVC.self) != nil) { 
    nav?.present(vc, animated: true, completion: nil) 
} else { 
    self.present(vc, animated: true, completion: nil) 
} 

이 코드의 문제는 : 내가 필요로 무엇

이 같은 것입니다. ProfilVC/"self"/"현재 표시되는 것"이 ​​nav의 일부인지 아니면 맨 위에 표시되는지 확인해야합니다.

원하는 것을 달성하는 가장 좋은 방법은 무엇입니까? 도움말은 매우 감사하겠습니다.

PS : 나는 navcase to overlapp the UINavigationBarProfilVC을 필요로하기 때문에 navProfilVC의 두 번째 인스턴스를 제시 아무 옵션입니다.

+0

적어도 아래의 의견에 관심이 있으십니까? –

답변

3

모든 ViewController는 navigationController property입니다. ViewController가 네비게이션 스택의 일부가 아니면이 속성은 nil입니다.

+0

도움 주셔서 감사합니다. –

관련 문제