2012-08-07 14 views
0

我只是好奇,如果讓我說我有一個單一的webView屬性我想分配在另一個viewController的初始化點。編譯器正在生成指示「不兼容指針類型」的錯誤。在initWithNib指派另一個視圖控制器

我不知道它爲什麼這樣做,因爲該類的超類仍然是UIViewController。任何幫助在這裏將非常感激。

謝謝。下面

代碼:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { 

    self = [super initWithNibName:nil bundle:nil]; 

    if (self) { 

     // Work your initialising magic here as you normally would 
     if ([[CartCheckout sharedInstance] universalVC]) { 
      //self = [[CartCheckout sharedInstance] universalVC]; 
      NSLog(@"testing"); 
      self = [[CartCheckout sharedInstance] universalVC]; 
     } 
     NSLog(@"initWithNibName allocated"); 
    } 

    return self; } 
+0

你應該可能發佈一些代碼 – nielsbot 2012-08-07 17:03:21

+0

添加了代碼nielsbot – kforkarim 2012-08-07 17:06:22

+0

我認爲你的問題仍然是模糊的。哪條線給出錯誤?這個代碼來自哪個類? '[[CartCheckout sharedInstance] universalVC]'返回什麼類型的對象? (我認爲這是一個'CartCheckout')你的類層次結構是什麼樣的? – nielsbot 2012-08-07 17:18:08

回答

0

發生這種情況,因爲實際的實例的視圖控制器,你正在嘗試做的分配是不正確的類型,它不事關它們共享一個超類。

self在這種情況下是唯一一種類型的視圖控制器子類的類型。另外,即使它們是相同的類型,Objective C也不會讓你用init方法將類的實例替換爲任何東西。

init方法是實例分配方法,如果您返回的指針除了實際所在的實例外,您將立即崩潰。

所以你有兩個問題,一個是你試圖將一個singleton實例注入init方法,另外兩個是你試圖劫持視圖的容器。

這些都不起作用。實例化正確類型的viewController,以便在需要時使用您的視圖。

你想,而不是這是什麼:

MyUniversalViewController *universalVC = [MyUniversalViewController alloc] initWithNibName:@"blabla 

嘗試切換類型的構造函數是爲時已晚。

相關問題