[iOS] The "More" tab shows the title and icon of the 5th tab.

Đang mở
#619 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 2 ngày

Chưa có ai nhận issue này.

Đánh giá

Độ khó
3/5
Thời gian dự kiến
1-2 ngày
Mức phù hợp với người mới
58/100
Loại issue
Lỗi
Độ rõ ràng
Đặc tả rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
ios, react-native, typescript
Lĩnh vực
mobile

Hướng nghiên cứu

Start by locating the iOS tab bar code that sets the title, accessibility label, and selected icon, then trace how it handles the system-created “More” tab when there are more than five screens. Reproduce with the six-tab sample from the issue and check the unselected, selected, and VoiceOver states. Done means the More tab consistently shows its own title and icon in all three states.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

bug
Before submitting a new issue
  • I tested using the latest version of the library, as the bug might be already fixed.
  • I tested using a supported version of react native.
  • I checked for possible duplicate issues, with possible answers.
Bug summary

With more than 5 tabs, iOS shows 4 tabs and a "More" tab that opens a list of the other tabs. The system draws the "More" tab with the "•••" icon and the label "More".

With this library, the "More" tab takes the title and the selected icon of the 5th tab.
In the sample code below, the 5th tab is Profile, with a person icon:

  1. When the "More" tab is not selected, it shows the correct "•••" icon, but the label "Profile".
  2. When the "More" tab is selected, it shows the person icon and the label "Profile". This also happens if you open Settings from the "More" list, so the tab bar shows Profile as the open tab.

VoiceOver also reads the "More" tab as "Profile". The normal icon stays correct because SwiftUI sets it. The library sets only the title, the accessibility label, and the selected icon.

Library version

1.5.0

Environment info
System:
  OS: macOS 27.0.1
  Shell: 5.9 - /bin/zsh
Binaries:
  Node: 24.20.0
  Yarn: 1.22.22
  npm: 11.19.0
  Watchman: 2026.07.27.00
Managers:
  CocoaPods: 1.17.0
SDKs:
  iOS SDK:
    Platforms: DriverKit 27.0, iOS 27.1, macOS 27.0, tvOS 27.0, visionOS 27.0, watchOS 27.0
IDEs:
  Xcode: 27.1/27A9275
npmPackages:
  expo: 58.0.16
  react: 19.3.0
  react-native: 0.88.0
  react-native-bottom-tabs: 1.5.0
  "@bottom-tabs/react-navigation": 1.5.0
  "@react-navigation/native": 7.5.1
  react-native-screens: 4.30.0
  react-native-safe-area-context: 5.10.1
iOS:
  hermesEnabled: true
  newArchEnabled: true
Steps to reproduce
  1. Create a tab navigator with 6 or more tabs.
  2. Look at the last tab in the tab bar.
  3. Tap the last tab, then tap Settings in the "More" list.

Expected: in step 2, the last tab shows "•••" and the label "More". In step 3, it shows the "More" icon and label.

Actual: in step 2, the last tab shows "•••" and the label "Profile". In step 3, it shows the person icon and the label "Profile".

Image

https://github.com/user-attachments/assets/82fc4b62-b35e-422a-a2e1-fb633d04be5f

Reproducible sample code
import { NavigationContainer } from '@react-navigation/native';
import { createNativeBottomTabNavigator } from '@bottom-tabs/react-navigation';
import { Text, View } from 'react-native';

const Tab = createNativeBottomTabNavigator();

const TABS = [
  ['Home', 'house'],
  ['Markets', 'chart.bar'],
  ['Options', 'slider.horizontal.3'],
  ['Blocks', 'square.grid.2x2'],
  ['Profile', 'person.crop.circle.fill'],
  ['Settings', 'gearshape.fill'],
];

function Screen({ route }) {
  return (
    <View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
      <Text>{route.name}</Text>
    </View>
  );
}

export default function App() {
  return (
    <NavigationContainer>
      <Tab.Navigator>
        {TABS.map(([name, sfSymbol]) => (
          <Tab.Screen
            key={name}
            name={name}
            component={Screen}
            options={{ tabBarIcon: () => ({ sfSymbol }) }}
          />
        ))}
      </Tab.Navigator>
    </NavigationContainer>
  );
}
Ngôn ngữ chính
TypeScript
Star
1.5k
Fork
112
Merge trung bình
2 ngày 3 giờ
Pull request đã merge (30 ngày)
13

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của callstack/react-native-bottom-tabs

Tất cả issue của callstack/react-native-bottom-tabs

Issue tương tự

Thêm issue về TypeScript

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.