2011-05-06 162 views
0

我還是比較新的iPhone開發,但我知道這個警告通常是在我的類頭文件中沒有聲明方法的結果。這有點不同 - 至少我認爲是這樣。警告:'UIViewController'可能不會響應'xxx'

我已經創建了我的應用程序的根視圖控制器,它動態地加載在其他視圖控制器的委託方法中的自定義標籤欄 - 本質上是這樣的:

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item { 

    UIViewController *viewController = [viewControllers objectAtIndex:item.tag]; 
    [self.selectedViewController.view removeFromSuperview]; 
    [self.view insertSubview:viewController.view atIndex:0]; 
    self.selectedViewController = viewController; 

} 

該代碼工作正常,並在負荷所需的意見。當視圖改變檢查運行,看是否設置視圖即將被卸載,如果是,則調用保存的設置方法是這樣的:

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item { 

    if (self.currentController == 1) { 
     [self.selectedViewController saveSettings]; 
    } 

    UIViewController *viewController = [viewControllers objectAtIndex:item.tag]; 
    [self.selectedViewController.view removeFromSuperview]; 
    [self.view insertSubview:viewController.view atIndex:0]; 
    self.selectedViewController = viewController; 

} 

同樣的代碼功能罰款和SettingsViewController的實例方法稱爲,但是因爲該方法的聲明在SettingsViewController的頭部而不是RootViewController,因此是警告。

如果我在RootViewController中聲明它,我也會得到'不匹配方法聲明'警告。我認爲重新宣佈我的功能會解決警告 - 但肯定不是解決這個問題的「正確」方法。

回答

2

如果我正確理解你的問題,這應該工作:

if (self.currentController == 1) { 
    [(SettingsViewController *)self.selectedViewController saveSettings]; 
} 
+0

我確信我已經試過了 - 但我必須有一個錯字,因爲完美地工作。謝謝! – 2011-05-06 22:45:46

相關問題