簡體   English   中英

在Objective C ++中加載筆尖並顯示窗口

[英]Loading Nib and Displaying Window in Objective C++

我正在嘗試使用Objective C ++從C ++構造函數加載Nib。 我已經搜索並找到足夠的示例來將一些代碼放在一起,但是它不顯示窗口。 或任何與此有關的窗口。

這是contructor的一個示例:

JokeSystem::JokeSystem() : fileSystem("/Library/Application Support/Jokes/")
{
    try
    {
        randSystem = new RandSelect<std::string>
                                   (fileSystem.getAllFileContents("%\n"));
    }
    catch (std::ifstream::failure)
    {
        NSWindowController * errorWindowControl = [[NSWindowController alloc] 
                                        initWithWindowNibName:@"ErrorWindow"];
        [errorWindowControl showWindow: nil];
    }
}

構造器的目的是將目錄的內容加載到字符串中。 我試圖做的是在文件無法打開時顯示錯誤窗口。

ErrorWindow.nib有一個帶有“確定”按鈕的窗口和一個用於錯誤的NSTextView ,我在該Nib中設置了一個NSWindowController並將其連接到該窗口。

我唯一的鏈接是,大多數示例都顯示此[errorWindowControl showWindow: self] ; 而不是showWindow: nil但是因為這是C ++構造函數,所以它沒有selfthis不起作用。

如果很重要,可以從MainMenu.nib的主要NSObjectawakeFromNib方法調用此構造方法。

謝謝

處理可可粉的方法有些奇怪。 我鼓勵您退一步,學習Objective-C,然后在您擁有的任何后備存儲或模型層之上,使用基於Objective-C的Cocoa UI層編寫應用程序。

無論如何,該代碼沒有什么特別的錯誤(保留用於奇數設計)。

首先要檢查的是-initWithWindowNibName:的返回值。 errorWindowControl實際上不是nil嗎? 如果為零,則NIB加載失敗。

您如何編寫Cocoa應用程序本身? 希望使用Xcode的標准應用程序捆綁包嗎?

另外,您不應該對/ Library / Application Support /的路徑進行硬編碼。 實際上,您的應用程序不應使用該目錄作為唯一的存儲位置。 如果沒有管理員訪問權限,許多用戶將無法對該目錄進行寫訪問,也無法安裝您的應用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM