web-dev-qa-db-ja.com

Apple Watch]でモーダルセグエから「キャンセル」というラベルを変更するにはどうすればよいですか?

モーダルビューを開いたときに「キャンセル」と表示される左上隅に表示されるラベルを変更するには...画像付きのボタンにします。

16
Hugo Alonso

ラベルCancelは、モーダルで表示されるWKInterfaceControllerのデフォルトの「タイトル」であり、Appleウォッチステータスバーに表示されます。

タイトルを画像に置き換える

このリンクの一部として、またはこのリンクを置き換えることなく、ステータスバーを非表示にしたり、ステータスバーに画像を表示したりすることはできません。

モーダルビューのタイトルを設定するオプション

ただし、タイトルを新しい文字列値に設定することはできます。たとえば、CancelCloseに置き換えたい場合があります。このタイトルを設定する方法は4つあり、以下に概説します。ほとんどの状況でオプション1のみが受け入れられる可能性が高いため、下部にあるを必ずお読みください。

  1. モーダルに表示されるWKInterfaceControllerのタイトルはInterfaceBuilderで設定できます。属性インスペクターでTitle属性を設定するだけです。もちろん、WKInterfaceControllerごとにこの方法で設定できる静的タイトルは1つだけですが、上記のメカニズムのいずれかを使用して実行時に動的に変更できます。

  2. モーダルに提示されたWKInterfaceControllerのinitメソッドでタイトルを設定できます。

    override init () {
        super.init ()        
        self.setTitle("Close")
    }
    
  3. モーダルに提示されたWKInterfaceControllerのawakeWithContextメソッドでタイトルを直接設定できます。

    override func awakeWithContext(context: AnyObject?) {
        super.awakeWithContext(context)
        self.setTitle("Close")
    }
    
  4. コンテキスト変数を使用して、モーダルに提示されたWKInterfaceControllerにタイトルを渡すことができます。 Interface Builderで、モーダルに表示されるコントローラーの属性インスペクターでidentifierを設定します。 (この例では、「modalController」に設定されています。)次に、目的のタイトルをコンテキストとして渡すことにより、コントローラーを提示します。

    self.presentControllerWithName("modalController", context: "Close")
    

    次に、モーダルに提示されたコントローラーで:

    override func awakeWithContext(context: AnyObject?) {
        super.awakeWithContext(context)                
        self.setTitle(context as? String)
    }
    

注意:

WatchKitの現在の「意図された動作」は、ほぼ確実に、最初のオプションのみがほとんどのユースケースで受け入れ可能であると見なされることを意味します。これは、現在、他の3つのオプションについては、ロード時にビューのデフォルトのタイトルが最初に表示され、その後、setTitleを使用して設定したテキストに置き換えられるためです。 awakeWithContextは、ビューがロードされた後に設計により実行されますが、initでsetTitleを使用しても、デフォルトのタイトルの初期表示を回避することはできません。

上で概説した最初のオプションは、Cancelをビューの新しいデフォルトタイトルに置き換えます。 Interface Builderのカスタムタイトルを以下のオプション2〜4のいずれかと組み合わせると、まったく同じ症状(最初のタイトルがsetTitleに置き換えられる)が表示されますが、最初のタイトルが異なります。

27
Duncan Babbage

タイトルの削除/非表示が可能です。ストーリーボードのタイトルフィールドに「」をコピーするだけです。 ASCIIスペースではありません。中国語のスペースです。(タイトルは表示されませんが、左上隅をタップしてモデルビューを閉じることができます。)

次に、新しいボタンを作成して、次のコードでモデルビューを閉じることができます。[self dismissController];

6
Vince Yuan

WatchKitプログラミングガイドの「インターフェイスコントローラーをモーダルに提示する」セクション を確認しました。

モーダルインターフェイスの左上隅には、インターフェイスコントローラのタイトル文字列が表示されます。ユーザーがその文字列をタップすると、WatchKitはモーダルインターフェイスを閉じます。モーダルインターフェイスを閉じる意味を反映するようにタイトル文字列を設定します。たとえば、情報を表示するときに、文字列を[完了]または[閉じる]に設定できます。 インターフェイスコントローラーのタイトルを指定しない場合、WatchKitはデフォルトで文字列Cancelを表示します。

そして、その「キャンセル」ビットについては、WKInterfaceControllerのドキュメント presentControllerWithName:context:

モーダルインターフェイスのタイトルは、提示されたインターフェイスコントローラが setTitle: メソッド。

現時点での唯一の選択は、画像ではなく別の文字列であることを示しているようです。

2

限定的ではありますが、タイトルに画像を挿入するための実用的な方法は、絵文字を使用することです。 Xcode 7.1の時点で、シミュレーターにはバグがあり、間違った文字が表示されるようですが、デバイス上では完全に正常に動作します。

setTitle("Hello world! ????")
0