2013-10-04 30 views
0

我正在加載ABPeoplePickerNavigationController。論peoplepicker接觸的點擊,我檢查的條件當檢查當前viewController類是否是IOS 7中的ABPersonViewController時發出問題

if([navigationController isKindOfClass:[ABPeoplePickerNavigationController class]] 
    && [viewController isKindOfClass:[ABPersonViewController class]]){ 

    //Statements 

} 

但在IOS 7我已經注意到了,第二個條件,那就是

[viewController isKindOfClass:[ABPersonViewController class] 

;否所有的時間。我知道加載的視圖控制器是ABPersonViewController。 這是/工作正常,直到IOS 6.可能是什麼問題?無論如何,我可以解決這個問題。

編輯:

該條件內UINavigationController檢查委託

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated 

並記錄時的viewController類被示出爲ABContactViewController

+0

日誌或調試器對它是什麼類有什麼看法? – Mundi

+0

@Mundi它說ABContactViewController。 –

+0

UINavigationController中的@Rob委託方法 –

回答

1

檢查你的課程時,你會發現iOS7返回一個不同的類型。

查看您需要檢查的邏輯。你不應該使用自省來適當地對人們採摘行爲做出反應。只需從ABPeoplePickerNavigationControllerDelegate實現標準委託方法即可。特別是,你必須實現:

- (BOOL)peoplePickerNavigationController: 
    (ABPeoplePickerNavigationController *)peoplePicker 
    shouldContinueAfterSelectingPerson:(ABRecordRef)person; 
+0

我已經實現了' - (BOOL)peoplePickerNavigationController: (ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person'。 我已經使用導航控制器委託來爲聯繫人選擇器和ABPersonViewController具有不同的導航欄。這就是爲什麼我檢查navigationController是否是'ABPeoplePickerNavigationController'和viewController是'ABPersonViewController'。 –

+1

這是一個不同的導航控制器。嘗試在不檢查課程的情況下實現該邏輯。你不應該依賴蘋果可能會隨時改變的課程。 – Mundi

相關問題