Help us understand the problem. What is going on with this article?

iOSで辞書をUIの一部として表示する方法

More than 5 years have passed since last update.

iOSで辞書を表示するにはUIReferenceLibraryViewControllerを使います。これがUIViewControllerのサブクラスであることからモーダルでしか使用できないと思い込んでいました。つまり、以下のようにしか使えないと思っていました。

Objective-C
UIReferenceLibraryViewController *controller
    = [[UIReferenceLibraryViewController alloc] initWithTerm:@"word"];
[self presentViewController:controller animated:YES completion:nil];

しかし、アップルのマニュアルに以下の記述がありました。
You can present this view controller modally or as part of another interface.
というわけで、以下のように既存のUIの一部として使えました。

Objective-C
[self.view addSubview:controller.view];

ただし、ナビゲーションバーにあるDoneボタンはそのままでは効きません。UIReferenceLibraryViewControllerのサブクラスを作ってdismissViewControllerAnimated:completion:メソッドをオーバーライドしましょう。Doneボタンが押されるとこのメソッドが呼ばれます。

Objective-C
@interface MyReferenceLibraryViewController : UIReferenceLibraryViewController
@end

@implementation MyReferenceLibraryViewController
-(void) dismissViewControllerAnimated:(BOOL)flag completion:(void (^)(void))completion
{
    [super dismissViewControllerAnimated:flag completion:completion];
    [self.view removeFromSuperview];
}
@end
T_Fuchi
iPhoneアプリ作ります。代表作はArrow Noteです。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away