同様の問題がありました。私の場合、UIReferenceLibraryViewController
クラスのメソッド内でオブジェクトを宣言してインスタンス化していました。UIReferenceLibraryViewController
オブジェクトがその時点で存在しなくなったため、[完了] ボタンを選択するとエラーが発生しました。この問題を解決するために、クラス インターフェイス内にメンバー変数を作成しました。
UIReferenceLibraryViewController *reference;
次に、retain を使用してプロパティを作成しました。
@property (retain) UIReferenceLibraryViewController *reference;
辞書画面を表示したいときのメソッドでは、次を使用しました。
reference = [[UIReferenceLibraryViewController alloc] initWithTerm:cell.textLabel.text];
[[[CCDirector sharedDirector] openGLView] addSubview:reference.view];
次に、dealloc メソッドで参照オブジェクトを解放しました。残念ながら、クラッシュはしなくなりましたが、[完了] ボタンは何もしません。
追加情報:
最終的に、アプリケーションが動作するようになりました。私のアプリは、CCScene に UITableView を追加し、ユーザーがテーブル ビュー セルをクリックして、セル内の単語の定義を検索できるようにします。
これを機能させるために、私は次のことを行いました: CCScene クラス (Game.m) 内で、UITableView を作成します。次に、UITableViewController クラスを作成し、UITableView dataSource を設定して、その新しいクラスにデリゲートします。
myTableView.dataSource = myWordListViewController;
myTableView.delegate = myWordListViewController;
次に、次のように UITableView を CCScene のサブビューとして追加します。
[[[CCDirector sharedDirector] openGLView] addSubview:myTableView];
CCScene クラスには、AppDelegate クラスのインスタンスであるメンバー変数 (デリゲートと呼ばれる) があります。AppDelegate クラスには、RootViewController のインスタンスであるメンバー変数があります。
RootViewController *viewController;
これで、UITableView が (CCScene の上に) ユーザーに提示されました。このテーブル ビューには、単語のリストが含まれています。ここで、テーブル ビューのセルをクリックしたときに辞書の定義が表示されるようにする必要があります。
MyWordListViewController (UITableViewController) で、このクラスがデータ ソースとして機能し、テーブル ビューのデリゲートを実行できるようにするメソッドが存在することを確認します。
<UITableViewDelegate, UITableViewDataSource>
また、ユーザーが UITableView (CCSCENE のサブビュー) のセルをクリックすると、辞書がテーブル ビューの上に表示されるようにします。
MyWordListViewController の didSelectRowAtIndexPath メソッドでユーザーのクリックに応答しています。テーブル ビューを CCScene (Game.m) のサブビューとして追加したので、CCScene が依存している AppDelegate RootViewController を使用する必要があります。
これを行うために、AppDelegate クラスのインスタンスを保持するメンバー変数を MyWordListViewController に追加しました。
delegate = (AppDelegate*) [[UIApplication sharedApplication] delegate];
MyWordListViewController の didSelectRowAtIndexPath メソッドで、AppDelegate クラス内の RootViewController 変数に依存して、テーブル ビュー上に辞書を表示できます。
reference = [[UIReferenceLibraryViewController alloc] initWithTerm:cell.textLabel.text];
[delegate.viewController presentModalViewController:reference animated:YES];
それは最も雄弁な解決策ではないかもしれませんが、うまくいきます。