2010-11-06 67 views
17

我希望能夠檢查一個UIViewController的類型,看看它是否是一個特定類型的這樣如何檢查UIViewController是否屬於目標c中的特定子類?

C代碼

if (typeof(instance1) == customUIViewController) 
{ 
    customUIViewController test = (customViewController)instance1; 

    // do more stuff 
} 
+0

您應該可以在iPhone SDK中使用C代碼......您是否試過您的代碼了? – Moshe 2010-11-06 23:58:54

+0

除了這是無效的C代碼... – dreamlax 2010-11-07 00:04:01

+0

@dreamlax - 我從來沒有說過它。 – Moshe 2010-11-07 00:10:57

回答

32

isKindOfClass:方法指示的對象是否是給定一個實例類或該類的子類的實例。

if ([instance1 isKindOfClass:[CustomUIViewController class]]) { 
    // code 
} 

如果要檢查對象是否是一個給定的類的實例(但不是類的子類的實例),使用isMemberOfClass:代替。

5

嘗試:

[vc isKindOfClass:[CustomViewController class]]; 
8

斯威夫特版本:

var someVC: UIViewController 

if someVC.isKindOfClass(MyCustomVC) { 
    //code 
} 
13
var someVC: UIViewController 

if someVC is MyCustomVC { 
    //code 
} 
2

我只是想除了增加this answer,如果你想看到,如果一個視圖控制器是的開關語句(在斯威夫特)您可以這樣做:

var someVC: UIViewController? 

switch someVC { 
    case is ViewController01: break 
    case is ViewController02: break 
    case is ViewController03: break 
    default: break 
} 
0

雨燕3.0 在最新的,我們必須與類名 旁邊加上自己或它會拋出「後預期的會員名稱或構造函數調用類型名稱」 下面的代碼U可以出錯用於Swift 3及更高版本

for viewController in viewControllers { 
          if viewController.isKind(of: OurViewController.self){ 
           print("yes it is OurViewController") 
           self.navigationController?.popToViewController(viewController, animated: true) 
          } 
         } 
相關問題