Порядок иерархии представления панели вкладок, отображаемый в отладчике представления, должен быть полностью независимым от свойства tabBar вспомогательного объекта tabBarController, которое содержит массив элементов панели вкладок.
Полагаю, причина того, что вы видите эту настройку упорядочения иерархии представлений, заключается в том, что изменение свойства изображения приведет к его перерисовке или удалению / чтению в иерархию представлений, поэтому он будет последним добавленным элементом. (это не должно влиять на порядок tabBarController.tabBar.items
)
То же самое произойдет, если вы просто измените заголовок элемента панели вкладок.
Я установил кнопку, чтобы изменить изображение элемента панели вкладок индекса 1, подобное показанному вами коду, затем отобразил порядок панели вкладок в метке:
- (IBAction)changeTabBarImage:(id)sender {
UIWindow *keyWindow = [[UIApplication sharedApplication]keyWindow];
UITabBarController *tabBarController =(UITabBarController*)[keyWindow rootViewController];
UITabBar *tabBar = tabBarController.tabBar;
UITabBarItem *targetTabBarItem = [[tabBar items] objectAtIndex:1]; // whichever tab-item
NSMutableString *tabBarOrder = [[NSMutableString alloc] init];
for (NSUInteger tabBarIndex = 0; tabBarIndex < [tabBar items].count; tabBarIndex++) {
[tabBarOrder appendString:[NSString stringWithFormat:@"index: %lu title: %@\n", tabBarIndex, [[tabBar items] objectAtIndex:tabBarIndex].title]];
}
self.firstLabel.text = [NSString stringWithString:tabBarOrder];
UIImage *image = [UIImage imageNamed:@"sync"];
[targetTabBarItem setSelectedImage:image];
[targetTabBarItem setImage:image];
}
Единственное когда-либо измененное изображение - это панель вкладок с индексом 1, и порядок расположения tabBarController.tabBar.items остается неизменным, даже если порядок иерархии представления в отладчике представления изменяется (как показано на скриншотах).
https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/CocoaViewsGuide/WorkingWithAViewHierarchy/WorkingWithAViewHierarchy.html
Если вы видите что-то другое, я бы порекомендовал добавить дополнительный код, поскольку я не могу воспроизвести проблему только с тем, что вы добавили.