2014-09-20 51 views
1

首先,我的應用在iOS 7上運行良好,因爲iOS 8無法通過「MFMailComposeViewController」發送應用內電子郵件。 消息窗口出現,僅顯示郵件主題並在幾秒鐘內關閉。 我發現這個線程描述我的問題,現在試圖實現從「喬吹」的答案https://stackoverflow.com/a/25864182/4061869iOS 8中的MFMailComposeViewController

但即時通訊一些錯誤,一些語義和解析問題。根據解決辦法,這部分

最糟糕的地方:

Of course have this in your Prefix file 

#define APP ((AppDelegate *)[[UIApplication sharedApplication] delegate]) 
// it's worth noting that is the delegate, not the "application" 

導致這個錯誤:

Use of undeclared identifier 'AppDelegate'

有誰知道哪裏出了問題,可以嗎? 我根據appdelegat.h/.m的文件名嘗試了不同的'AppDelegate'字樣,但沒有任何幫助。

回答

0

您可以通過定義應用程序委託中取的ViewController您工作中,:

AppNameAppDelegate *APP = [[UIApplication sharedApplication]delegate]; 

不言自明的,由AppName的我的意思是你的應用程序的名稱。確保將AppDelegate.h導入到.m文件中。

#import "AppNameAppDelegate.h" 

爲了記錄在案,我也有同樣的問題與MFMailComposeViewController,我已經嘗試過的方法在您linked(創建一個全球性的郵件作曲家)職位的建議,但它仍然不會爲我工作使用iOS 8模擬器。顯然它適用於運行iOS 8的物理設備,但我個人目前還不能確認。

+0

我將導入行添加到前綴文件中,大多數錯誤都消失了。現在我得到一個新的這一行'[APP cycleTheGlobalMailComposer];' 它說'沒有可見@interface for'ITLAppDelegate'聲明選擇器'cycleTheGlobalMailComposer'' 當使用建議的方法編譯時,你有任何錯誤? – k0riz0n 2014-09-21 10:50:59

+0

如果你在'AppDelegate.m'文件中有'cycleTheGlobalMailComposer'方法,那麼你需要從你想要調出郵件編輯器的任何視圖中調用該方法。你可以通過在'AppDelegate.h'文件中用' - (void)cycleTheGlobalMailComposer;'來定義它。然後調用這個方法:'ITLAppDelegate * callMethod = [[ITLAppDelegate alloc] init]; [callMethodcycleTheGlobalMailComposer];'。這應該擺脫任何錯誤。當該方法被調用時,您應該設置斷點,以便您可以確切地看到它的去向。這應該會停止編譯錯誤。 – rosshump 2014-09-21 12:27:32

+0

' - (void)cycleTheGlobalMailComposer;'在ITLAppDelegate.m中定義爲它在本教程中編寫的內容。現在我試了你的代碼'ITLAppDelegate * callMethod = [[ITLAppDelegate alloc] init]; [callMethod cycleTheGlobalMailComposer];'但是錯誤仍然是'沒有可見@interface for'ITLAppDelegate'聲明選擇器'cycleTheGlobalMailComposer'。 – k0riz0n 2014-09-21 15:00:23