在ios中是否可以让导航栏保持原样,而不是在单击时在视图层次结构中移动?

发布于 2024-12-04 04:43:47 字数 132 浏览 1 评论 0原文

在ios中是否可以让导航栏保持原样,而不是在单击时在视图层次结构中移动? 我想要的是标准的 5 按钮导航,当我单击某个项目时,它会给我一个视图转换并突出显示导航栏项目,而无需通过将其向下移动到层次结构来更改导航栏。如果这是一个愚蠢的问题,我深表歉意。

Is it possible in ios to have the navigation bar stay as is, in rather then moving through the view hierarchy on click?
What I want is a standard 5 button navigation and when I click on an item it gives me a view transition and highlights the navbar item without changing the nav bar by moving it down the hierarchy. apologies if this is a stupid question.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

甜心小果奶 2024-12-11 04:43:47

当然,您可以这样做,但您实际上是在滚动自己的 UITabBarController。如果您还没有阅读过,请阅读 类参考。如果您愿意,可以将标签栏放置在屏幕顶部。请参阅此问题

如果您仍想使用导航栏创建自己的版本,则不要使用 UINavigationController。相反,您可以使用带有导航栏和 UISegmentedControl 的 UIViewController 子类。 UICatalog 示例代码项目展示了如何实现这。

然后在分段控件的 IBAction 中,执行如下操作:

- (IBAction)segmentChanged:(id)sender {

int selectedIndex = [sender selectedSegmentIndex];

switch (selectedIndex) {
    case 0:
        NSLog(@"segment 0 selected");
        //perform transition and switch views here
        break;
    case 1:
        NSLog(@"segment 1 selected");
        //perform transition and switch views here
        break;
    case 2:
        NSLog(@"segment 2 selected");
        //perform transition and switch views here
        break;
    default:
        break;
}  
}

Sure, you could do this, but you're effectively rolling your own UITabBarController. If you haven't already, read it's class reference. You can place the tab bar at the top of your screen if that's what you want. See this question.

If you still want to create your own version with the Navigation Bar, then don't use a UINavigationController. Instead you could use a UIViewController subclass with a Navigation bar, and a UISegmentedControl. The UICatalog Sample code project shows how to implement this.

Then in the IBAction for your segmented control, do something like this:

- (IBAction)segmentChanged:(id)sender {

int selectedIndex = [sender selectedSegmentIndex];

switch (selectedIndex) {
    case 0:
        NSLog(@"segment 0 selected");
        //perform transition and switch views here
        break;
    case 1:
        NSLog(@"segment 1 selected");
        //perform transition and switch views here
        break;
    case 2:
        NSLog(@"segment 2 selected");
        //perform transition and switch views here
        break;
    default:
        break;
}  
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文