转到其他视图后,标签栏按钮的顺序发生了变化

Posted

技术标签:

【中文标题】转到其他视图后,标签栏按钮的顺序发生了变化【英文标题】:Tabbar buttons order changed after go to other view 【发布时间】:2016-01-27 10:01:35 【问题描述】:

我的标签栏中有 2 个按钮,以编程方式添加。但是在导航到视图中的另一个占位符后顺序发生了变化。

当我打开应用程序时: 当我进入电影标签时:

代码:

self.searchButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemSearch target:self action:@selector(toggleSearchBar)];

UIImage* meetupButtonIcon = [UIImage imageNamed:@"meetup_logo_icon"];
UIImage* meetupButtonIconHighlighted = [UIImage imageNamed:@"meetup_logo_icon_highlighted"];
CGRect frameimg = CGRectMake(0, 0, 25, 25);
UIButton *meetupUIButton = [[UIButton alloc] initWithFrame:frameimg];
[meetupUIButton setBackgroundImage:meetupButtonIcon forState:UIControlStateNormal];
[meetupUIButton setBackgroundImage:meetupButtonIconHighlighted forState:UIControlStateHighlighted];
[meetupUIButton addTarget:self action:@selector(toggleMeetup:) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *meetupIcon =[[UIBarButtonItem alloc] initWithCustomView:meetupUIButton];
self.meetupButton = meetupIcon;

[self.navigationItem setRightBarButtonItems:[NSArray arrayWithObjects:_meetupButton, _searchButton, nil]];

奇怪的是我需要在数组中以错误的顺序添加按钮:_meetupButton、_searchButton 并且看起来它更改为正确的顺序。我的问题是如何强制图像始终保持相同的顺序。

【问题讨论】:

您是设置一次还是每次更改占位符视图时设置按钮? rightBarButtonItems 的文档以与您的代码和第一个屏幕截图相匹配的方式定义按钮顺序(在从左到右的 UI 上),如果您将 rightBarButtonItems 设置为具有不同顺序的其他任何位置,您可以期望导航栏相应地更新。 【参考方案1】:

可能出了点问题。然而,为了让它工作,navigationItemleftBarButtonItems 可以使用您分配的Array 的序列进行排序,navigationItemrightBarButtonItems 可以使用您分配的Array 的反向序列进行排序。

也许你可以试一试!

【讨论】:

以上是关于转到其他视图后,标签栏按钮的顺序发生了变化的主要内容,如果未能解决你的问题,请参考以下文章

iOS 7 - 后退按钮后标签栏消失

跳转到其他页面或删除视图标题栏后如何释放控制器

点击时如何停止标签栏项目图像的背景宽度变化?

转到特定的标签栏视图

当您通过标签栏返回视图控制器时卡在子视图上

如何从外部视图控制器转到标签栏项目