Я создаю приложение, которое очень похоже на приложение Календарь на iOS. У меня есть приложение на основе вкладок, которое иногда должно вызывать модальные и другие временные карты, в зависимости от показанного экрана. В приложении Календарь Apple, если вы нажмете на событие, вы получите нормальный переход (слайд сбоку или «карта»), но если вы нажмете кнопку «+», вы получите модальное (снизу вверх) переход. Я хотел бы добиться чего-то подобного. Теперь проблема в том, что я могу получить только все модалы или все переходы карт.
const CalendarTab = createStackNavigator(
{
CalendarView: {screen: CalendarView},
ViewEvent: {screen: ViewEvent}, // This should be a "card" transition
AddEvent: {screen: AddEvent}, // This should be a "modal" transition
},
{
mode: "modal", // This shouldn't be hard-coded
initialRouteName: "CalendarView",
}
);
const TabStack = createBottomTabNavigator({
Calendar: CalendarTab,
Settings: SettingsTab,
},
{
initialRouteName: "Calendar",
navigationOptions: ({ navigation }) => ({
tabBarVisible: navigation.state.index === 0, // This should only apply to modals
});
}
export default class App extends Component {
render() {
return <TabStack />;
}
}
Редактировать: Я нашел частичное решение здесь: https://github.com/react-navigation/react-navigation/issues/707#issuecomment-299859578,, но это приводит к тому, что заголовки портятся и, как правило, является хрупким решением.