2012-10-28 109 views
3

Xcode和obj-c中的初學者問題。iOS 6.0中的MessageUI問題

在我的項目中,我有一個帶有IBAction的按鈕,可以發送短信息而不需要使用我的應用程序(MessageUI鏈接到項目)。在iOS 5代碼運行良好,但是當我在最新的Xcode中打開相同的項目以重新編譯iOS 6時,我收到了以下警告:http://uaimage.com/image/10e31752 在iOS 6中使用MessageUI時會發生什麼變化?

感謝您的關注!

+0

自從將iPhone 4更新至IO6後,我遇到同樣的問題。 雖然沒有警告。 它似乎是由線程模型中的更改引起的。 – DevNull

+0

我們可以看到接口聲明嗎? –

+0

當然! http://uaimage.com/image/e71f051f由於警告,註釋掉了協議聲明 – Alex

回答

0

MFMessageComposeViewControllerDelegate添加到您的標題(.h)文件。

例子:UIViewController< MFMessageComposeViewControllerDelegate>

+0

我的ViewController符合MFMessageComposeViewController,並且MessageUI被添加到項目文件夾中。一切工作正常在iOS 5與相同的代碼。 – Alex

1

嗯...東西很奇怪就這樣發生了。

我的項目結構如下:

YourProject (Root of the project with Xcode Project Icon) 
    /YourProject (Folder) 
     /Group X (Nested Folder) 
      /SomeViewController.h 
     /Group Y (Nested Folder) 
      /Group Y1 (Nested Folder) 
       /OtherViewController.h 
      /Group Y2 (Another Nested Folder) 
       /YetAnotherViewController.h 

類SomeViewController,使用MFMessageComposeViewControllerDelegate和MFMailComposeViewControllerDelegate工作得很好:

... 
@interface SomeViewController : UIViewController <MFMessageComposeViewControllerDelegate, MFMailComposeViewControllerDelegate> {} 
... 

的類OtherViewController和YetAnotherViewController,使用相同的MFMessageComposeViewControllerDelegate和MFMailComposeViewControllerDelegate贏得」編譯!

錯誤是:

  • 找不到協議聲明 'MFMessageComposeViewControllerDelegate'

和/或

  • 找不到協議聲明 'MFMailComposeViewControllerDelegate'。

所以我檢查並重新檢查導入,聲明所有的方法和我的ViewControllers是相同的,唯一的區別是他們的名字是數據對象。

最後,解決方案真的很愚蠢!我通過將嵌套文件夾移動一層來解決了這個問題。一切都很好地編譯!

顯然,導入庫(將它們添加到項目中時)未達到子組中的文件!我猜這是XCode和iOS 6的一個錯誤,但我得到了同樣的錯誤。

由於這些組是虛擬文件夾(它們不在文件系統中),只是在項目結構中,這實際上很奇怪。

我希望節省時間和頭痛的人!

+0

非常感謝您的評論,希望它能幫助別人! – Alex