iOSスクリーンレットで複数のテーマをサポートする

iOSスクリーンレットで複数のテーマをサポートする

ご覧のページは、お客様の利便性のために一部機械翻訳されています。また、ドキュメントは頻繁に更新が加えられており、翻訳は未完成の部分が含まれることをご了承ください。最新情報は都度公開されておりますため、必ず英語版をご参照ください。翻訳に問題がある場合は、こちらまでご連絡ください。

テーマを使用すると、同じスクリーンレットを異なるルックアンドフィールで表示できます。 たとえば、同じスクリーンレットを使用するアプリが複数ある場合、異なるテーマを使用して、スクリーンレットの外観を各アプリのスタイルに一致させることができます。 Liferay Screensに付属の各スクリーンレットは、複数のテーマの使用をサポートしています。 ただし、カスタムScreenletが異なるテーマをサポートするには、 View Model プロトコルが含まれている必要があります。 ビューモデルは、スクリーンレットの表示に使用されるテーマを抽象化し、開発者が他のテーマを使用できるようにします。 たとえば、 のスクリーンレット作成チュートリアル のScreenletクラスの createInteractor メソッドは、Viewクラスへの参照を取得するときに、Viewクラス(AddBookmarkView_default)に直接アクセスします。

let view = self.screenletView as! AddBookmarkView_default

これは、 AddBookmarkView_default\!で定義されたテーマをハードコードすることを除いて、すべて問題あり`ん。 別のテーマを使用するには、このコード行を書き換えて、そのテーマのViewクラスを使用する必要があります。 これは非常に柔軟ではありません\! Screenletに高価なヨガのクラスを受講させる代わりに、View Modelプロトコルを介してテーマのViewクラスを抽象化できます。

このチュートリアルでは、スクリーンレットにビューモデルを追加する方法を示します。 ブックマークScreenletで作成した追加 Screenlet作成チュートリアル 一例として使用されています。 スクリーンレットの作成中にビューモデルを追加することもできます。

ビューモデルの作成と使用

スクリーンレットでビューモデルを追加して使用するには、次の手順に従います。

  1. スクリーンレットの属性を定義するビューモデルプロトコルを作成します。 これらの属性は、Screenletクラスが使用するViewクラスプロパティです。 たとえば、Add Bookmark Screenlet の Screenletクラスは、Viewクラスプロパティ title` および `URL`ます。 したがって、ブックマークスクリーンレットのビューモデルプロトコル(`AddBookmarkViewModel`)を追加するには、これらのプロパティの変数を定義する必要があります。

    ``` 
     import UIKit
    
     @objc protocol AddBookmarkViewModel {
    
         var URL: String? {get}
    
         var title: String? {get}
    
     }
    ```
    
  2. 2

    ViewクラスをScreenletのView Modelプロトコルに適合させます。 すべてのプロトコルのプロパティを取得/設定してください。 たとえば、 AddBookmarkViewModel準拠したAdd Bookmark Screenletのビュークラス(AddBookmarkView_default)は次のとおりです。

    ``` 
     import UIKit
     import LiferayScreens
    
     class AddBookmarkView_default: BaseScreenletView, AddBookmarkViewModel {
    
         @IBOutlet weak var URLTextField: UITextField?
         @IBOutlet weak var titleTextField: UITextField?
    
         var URL: String? {
             return URLTextField?.text
         }
    
         var title: String? {
             return titleTextField?.text
         }
    
     }
    ```
    

    3

    Screenletクラスでビューモデル参照を作成して使用します。 Viewクラスの直接参照ではなく、この参照からデータを取得することにより、他のテーマでScreenletを使用できます。 たとえば、 AddBookmarkView_defaultへの直接参照の代わりに、 viewModel プロパティを持つ AddBookmarkScreenlet クラスがあります。 このクラスの createInteractor メソッドは、このプロパティを使用して、 AddBookmarkInteractor コンストラクターで タイトル および URL プロパティを取得します。

    ``` 
     ...
     //View Model reference
     var viewModel: AddBookmarkViewModel {
         return self.screenletView as! AddBookmarkViewModel
     }
    
     override public func createInteractor(name name: String?, sender: AnyObject?) -> Interactor? {
    
         let interactor = AddBookmarkInteractor(screenlet: self,
                                                folderId: folderId,
                                                title: viewModel.title!,
                                                url: viewModel.URL!)
    
         // Called when the Interactor finishes succesfully
         interactor.onSuccess = {
             let bookmarkName = interactor.resultBookmarkInfo!["name"] as! String
             print("Bookmark \"\(bookmarkName)\" saved!")
         }
    
         // Called when the Interactor finishes with an error
         interactor.onFailure = { _ in
             print("An error occurred saving the bookmark")
         }
    
         return interactor
     }
     ...
    ```
    

それでおしまい\! これで、スクリーンレットは、作成した他のテーマを使用する準備が整いました。 上のチュートリアルを参照してください 作成iOSのテーマ テーマの作成手順について。

関連トピック

iOSテーマの作成

iOSスクリーンレットの作成

iOS用Liferayスクリーンのアーキテクチャ

iOSリストスクリーンレットの作成

« iOSテーマのパッケージ化スクリーンレットアクションの追加 »
この記事は役に立ちましたか?
0人中0人がこの記事が役に立ったと言っています