Objective C++を使用してC++コンストラクタからNibをロードしようとしています。私はいくつかのコードを一緒に取得するのに十分なサンプルを検索して見つけましたが、ウィンドウは表示されません。またはその問題の窓。ここObjective C++でNibと表示ウィンドウをロードする
は、コンストラクタの例である:
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には、エラーのOKボタンとNSTextView
を持つ単一のウィンドウがあります。このウィンドウにNSWindowController
を設定してウィンドウに接続しました。
私の唯一のリンクは、ほとんどの例がこれを示していることです。[errorWindowControl showWindow: self]
; showWindow: nil
ではなく ですが、これはC++のコンストラクタなので、私にはself
がなく、this
は機能しません。
このコンストラクタは、MainMenu.nib
のNSObject
のawakeFromNib
メソッドから呼び出されます。
おかげ
私はerrorWindowControlをテストしましたが、それはゼロではありませんでした。プログラムにあるObjective-Cは、MainMenu.nibのフロントエンドであり、このクラスからC++関数を実行します。そのため、ここではウィンドウを作成しています。なぜなら、上記のコンストラクタはプログラムの開始時に使用され、ウィンドウを表示してプログラムを終了するからです。ディレクトリは〜/ Library/Application Supportですが、エラー処理をチェックするために間違ったディレクトリをロードするために使用しました。 Xcodeで標準のCocoaアプリバンドルを使用しています。ありがとう –