React Native Course

Day 3

Expo UI SwiftUIで3画面タブを作る

@expo/ui/swift-ui の TabView を使い、Today、Tasks、Settings の3画面を切り替えられる最小構成を作ります。各画面では Host と Text を使って、どの画面か分かる状態にします。

React Native / Expo12分

動画では、@expo/ui/swift-uiTabView を使って、TodayTasksSettings の3画面を作ります。 この記事では、作成するファイル構成、各画面の最小コード、確認ポイントを整理します。

今回作るもの

今回は、3つの画面をタブで切り替えられる構成を作ります。

作る画面は以下です。

画面役割
Today表示、レイアウト、進捗、アクションを学ぶ画面
Tasks入力、一覧、行操作を学ぶ画面
Settingsフォーム、セクション、選択系を学ぶ画面

この回では、各画面の中身は最小限にします。 HostText を使って、どの画面を表示しているか分かる状態にします。

作成するファイル

第3回では、以下のファイルを作成します。

src/
├── app/
│   └── index.tsx
└── screens/
    ├── TodayScreen.tsx
    ├── TasksScreen.tsx
    └── SettingsScreen.tsx

components/data/types/ は、必要になったタイミングで作成します。

TabViewを作る

src/app/index.tsxTabView を表示します。

import { TabView } from "@expo/ui/swift-ui";
import { SettingsScreen } from "../screens/SettingsScreen";
import { TasksScreen } from "../screens/TasksScreen";
import { TodayScreen } from "../screens/TodayScreen";

export default function Index() {
  return (
    <TabView>
      <TabView.Item title="Today">
        <TodayScreen />
      </TabView.Item>
      <TabView.Item title="Tasks">
        <TasksScreen />
      </TabView.Item>
      <TabView.Item title="Settings">
        <SettingsScreen />
      </TabView.Item>
    </TabView>
  );
}

画面ファイルを作る

各画面では、HostText を使って、どの画面か分かるようにします。

src/screens/TodayScreen.tsx

import { Host, Text } from "@expo/ui/swift-ui";

export function TodayScreen() {
  return (
    <Host>
      <Text>Today Screen</Text>
    </Host>
  );
}

src/screens/TasksScreen.tsx

import { Host, Text } from "@expo/ui/swift-ui";

export function TasksScreen() {
  return (
    <Host>
      <Text>Tasks Screen</Text>
    </Host>
  );
}

src/screens/SettingsScreen.tsx

import { Host, Text } from "@expo/ui/swift-ui";

export function SettingsScreen() {
  return (
    <Host>
      <Text>Settings Screen</Text>
    </Host>
  );
}

iOSで動作確認する

iOS Simulator で起動します。

# iOS Simulator で起動
bunx expo start --ios

TodayTasksSettingsTabView で切り替えられればOKです。

次回やること

次回から、Today 画面を育てていきます。

まずは TextLabelVStackHStackSpacer を使って、Today の基本レイアウトを作ります。

← Expo UI SwiftUI 基礎コース に戻る