LoginSignup
0
0

More than 1 year has passed since last update.

WatchOSのEmptyView()が機能していない

Posted at

問題点

EmptyViewを使いたい意図として、
WatchConnectivityを使い、iOS App側で操作を行ったときにAppleWatchの画面も遷移させる処理をさせたい。この際にAppleWatch側には画面遷移用のボタンを表示させたくなかった。


変数pushViewFlagtrueになると画面遷移するサンプルコード

struct ContentView: View {
    
    @State private var pushViewFlag: Bool = false
    
    var body: some View {
        NavigationView {
            VStack {
                Text("サンプルな画面")
                NavigationLink(destination: NextView(),
                            isActive: $pushViewFlag) {
                    // 何も表示しない
                    EmptyView()
                }
            }
        }
    }
}

出力される画面
↓↓↓↓
incoming-88114DE0-C5A7-429B-8CBC-74819791821A.PNG

空のViewを表示するコードを書いているはずが、
上記の画像のような状態で空白のボタンが表示される。

とりあえずの解決方法

遷移のトリガーとして使っているpushViewFlagtrueの時以外は、  
画面に描画されないように分岐する。

struct ContentView: View {
    
    @State private var pushViewFlag: Bool = false
    
    var body: some View {
        NavigationView {
            VStack {
                Text("サンプルな画面")
                if pushViewFlag {
                    NavigationLink(destination: NextView(),
                                   isActive: $pushViewFlag) {
                        // 何も表示しない
                        EmptyView()
                    }
                }
            }
        }
    }
}

SwiftUIでの開発が初めてだったのでここで地味につまづいた。

iOSだと空のViewが生成されるらしいが、WatchOSでEmptyView()でViewが生成されているのはバグなのか...?

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0