0

I am pretty new to react native development. I am trying to make a tvOS app. For example, it has two tabs and each tab has its own navigation stack for push/pop. As I understand I should use react-native-tvos for that. And again as I understand I should use TabBarIOS for the tvOS tabor instead of regular tab navigation. I even asked ChatGpt to create a sample app for that.

But I still get an error - "Error: Another navigator is already registered for this container. You likely have multiple navigators under a single "NavigationContainer" or "Screen". Make sure each navigator is under a separate "Screen" container. See https://reactnavigation.org/docs/nesting-navigators for a guide on nesting."

import React from 'react';
import { NavigationContainer } from '@react-navigation/native';
import { createNativeStackNavigator } from '@react-navigation/native-stack';
import { createBottomTabNavigator } from '@react-navigation/bottom-tabs';
import { TabBarIOS, View, Text, Button } from 'react-native';

// create the Stack navigator
const Stack = createNativeStackNavigator();

// define the screens for the Stack navigator
function ScreenA({ navigation }) {
  return (
    // example screen
    <View>
      <Text>Screen A</Text>
      <Button title="Go to Screen B" onPress={() => navigation.navigate('ScreenB')} />
    </View>
  );
}

function ScreenB({ navigation }) {
  return (
    // example screen
    <View>
      <Text>Screen B</Text>
      <Button title="Go back to Screen A" onPress={() => navigation.goBack()} />
    </View>
  );
}

// create the Tab navigator
const Tab = createBottomTabNavigator();

// define the screens for the Tab navigator
function TabScreenA() {
  return (
    // example screen
    <Stack.Navigator>
      <Stack.Screen name="ScreenA" component={ScreenA} />
      <Stack.Screen name="ScreenB" component={ScreenB} />
    </Stack.Navigator>
  );
}

function TabScreenB() {
  return (
    // example screen
    <Stack.Navigator>
      <Stack.Screen name="ScreenA" component={ScreenA} />
      <Stack.Screen name="ScreenB" component={ScreenB} />
    </Stack.Navigator>
  );
}

// define the Tab navigator with the Stack navigator as one of its screens
function TabNavigator() {
  return (
    <TabBarIOS>
      <TabBarIOS.Item title="Tab Screen A" selected={true}>
        <TabScreenA />
      </TabBarIOS.Item>
      <TabBarIOS.Item title="Tab Screen B">
        <TabScreenB />
      </TabBarIOS.Item>
    </TabBarIOS>
  );
}

function App() {
  return (
    <NavigationContainer>
      <TabNavigator />
    </NavigationContainer>
  );
}

export default App;
Sergnsk
  • 3,305
  • 3
  • 23
  • 28

0 Answers0