2011-11-02 65 views
0

我使用下面的代碼,並得到以下錯誤:爲什麼我無法將新視圖控制器推送到當前視圖?

Showing code used and errors with code

編輯:見this如果您無法讀取上面的圖片!

「ChangePasscode」目前被聲明爲一個類,並且是一個帶.h和.m文件以及.nib文件的視圖控制器。

爲什麼會出現這些問題,我該如何解決這些問題?

謝謝!

+0

聽起來就像['接收器類型‘CCParticleBatchNode’類消息是向前聲明'](http://stackoverflow.com/q/7965929/590956)昨天得到了問。這裏有一些相當不錯的答案,但你可能想要遵循那個Q. – Sam

+0

不是真正相關的...這裏的答案更好/更有用... – pixelbitlabs

回答

1

我會說,你沒有在當前的文件中導入ChangePasscode.h

更新:。響應在下面評論話題,你需要真正創建一個導航結構,如果你想推視圖控制器。在IOS 5的優選方式是如下:

// AppDelegate.h 
// …Other existing code 
@property (nonatomic, retain) UINavigationController *navController; 
@end 

// AppDelegate.m 
@synthesize navController; 
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
    navController = [[UINavigationController alloc] initWithRootViewController:viewController]; 
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
    self.window.rootViewController = navController; 
    self.window.backgroundColor = [UIColor whiteColor]; 
    [self.window makeKeyAndVisible]; 
    return YES; 
} 
+0

正確!但是...編譯時出現這個錯誤:http://f.cl.ly/items/0x2t1A2c12383d2M130h/2ndXCodeIssue.tiff – pixelbitlabs

+0

試試看Cle (產品>清潔)。當您單擊「清理」菜單選項時,也可以通過按住Option鍵來清除構建文件夾。 – FeifanZ

+0

它現在有效,因爲我將「#import」ChangePasscode.m「」更改爲「#import」ChangePasscode.h「」 - 儘管調用新視圖控制器的動作被調用時,什麼都沒有發生?代碼完全一樣。在NSLog中沒有任何一個:( – pixelbitlabs

0

變化[NSBundle mainBundle]爲零 確保您有進口ChangePasscode.h在M檔

+0

修正了錯誤,因爲我沒有使用「#import 「代碼。但是,編譯時我現在得到這個錯誤:http://f.cl.ly/items/0x2t1A2c12383d2M130h/2ndXCodeIssue.tiff – pixelbitlabs

0

我想這是循環引用的經典案例的頂部。也許這兩個類相互引用?由於此前向聲明,當嘗試引用具有前向聲明的類的類名稱或屬性時,可能會收到各種警告。

凡你有包括ChangePasscode。也可以使用#import而不是#include

UPDATE:爲您解決ld: duplicate symbol...錯誤

看來你正在編譯同一類ChangePasscode兩次在代碼中的不同地方。這可能發生在以下情況。

  1. 你已經把同一類的實現分爲兩個不同的文件
  2. 實際上,你只是一個實現這一類的,但是你也連接在你的項目的框架或含類名庫是完全和你一樣。
  3. 你也可以得到這個錯誤,如果你不慎錯過了Xcode的自動完成#進口語句指定重複‘類,而不是‘.H’的」爲.M」文件’。

嘗試發現在整個項目中的類,並確保只有一個副本可以在自己的項目中

+0

修正了錯誤,因爲我沒有使用「#import」代碼。但是,編譯時我現在得到這個錯誤:http://f.cl.ly/items/0x2t1A2c12383d2M130h/2ndXCodeIssue.tiff – pixelbitlabs

+0

顯然你已經在.m文件中重新定義了一些類變量。通過重新命名衝突的名字來糾正這種情況,你很好。 –

+0

我檢查過,根本沒有任何類參考:/ – pixelbitlabs

0

使用

@class ChangePasscode; 

而不是使用

#import ChangePasscode.h 
+0

這就是我正在做的,但有錯誤在問題中解釋,所以我改爲#import和我的新錯誤是:http://f.cl.ly/items/0x2t1A2c12383d2M130h/2ndXCodeIssue.tiff – pixelbitlabs

+0

看來你正在編譯在您的代碼的不同位置兩次相同的ChangePasscode類。這可能發生在以下情況。 您已將相同的類實現放入兩個不同的文件中; 實際上你只有一個這個類的實現,但是你也在你的項目中鏈接一個框架或庫,其中包含一個名字與你的名字完全相同的類。 嘗試在整個項目中查找您的課程,並確保您的項目中只有一個副本可用。 – aahsanali

+0

我該怎麼做?你什麼意思? :S – pixelbitlabs

相關問題