通过标签栏和按钮导航屏幕
Posted
技术标签:
【中文标题】通过标签栏和按钮导航屏幕【英文标题】:Navigate screens by tab bar and buttons 【发布时间】:2012-06-22 18:13:44 【问题描述】:我有以下问题:
在我的应用程序中,有两种方法可以导航到其他屏幕:通过按钮或标签栏。
所有屏幕都有调用其他屏幕的标签栏,但主屏幕是有按钮但没有标签栏的屏幕。
当我开始开发我的应用程序时,我选择标签栏应用程序模板,如果我通过按标签调用屏幕,它工作正常。当我使用主屏幕时,问题就开始了:
我需要在这个特定屏幕中“隐藏”标签栏。 在主屏幕中,如果我通过按钮调用新屏幕,则标签栏会在新屏幕中消失(有意义,因为屏幕是通过按钮而不是标签栏调用的)。为了解决这个问题,我认为也许我可以创建一个自定义标签栏(我还不知道如何)并像 UIControl 一样在我的屏幕上调用它,所以如果我需要更改标签栏可以在调用该控件的所有屏幕上进行修改。
你有什么推荐的?创建自定义标签栏并像 UIControl 一样使用它是个好主意吗?如果是,我该如何创建一个?
我用这个来调用窗口
RecurringGiftListViewController *listViewController = [[RecurringGiftListViewController alloc] initWithNibName:@"RecurringGiftListViewController" bundle:nil];
listViewController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[self presentModalViewController:listViewController animated:YES];
[listViewController release];
【问题讨论】:
你能把你用来推送视图的位代码放上去吗? @Ahmed 当然,我用,我用这个来调用windows RecurringGiftListViewController *listViewController = [[RecurringGiftListViewController alloc] initWithNibName:@"RecurringGiftListViewController" bundle:nil]; listViewController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve; [自我presentModalViewController:listViewController动画:YES]; [listViewController 发布]; 【参考方案1】:听起来你根本不应该使用标签栏。当您按下其中一个按钮时,标签栏不应消失。把它想象成你的应用程序的主菜单。您可以拥有其他屏幕,例如导航控制器或占据整个屏幕的模式对话框,但是您应该能够退出回到标签栏。
再次考虑用户界面的结构。也许您可以重新安排它以使您的“主屏幕”成为一个可从其中一个标签栏页面访问的对话框?
【讨论】:
问题是应用程序的设计是由客户端创建的,所以我认为我无法更改它 当客户给你一个糟糕的设计时,你需要教育他们为什么它是糟糕的,以及 UI 范例应该如何工作。我有一个客户,他基本上为他们的应用程序进行了网页设计,并带有非常小的复选框。试图将 Cocoa Touch 弯曲成一个糟糕的设计只会让你痛苦,并导致一个糟糕的产品。这是一个双输的局面。【参考方案2】:您的问题是您将其他视图呈现为“模态”。用这个替换你的代码:
RecurringGiftListViewController *listViewController = [[RecurringGiftListViewController alloc] initWithNibName:@"RecurringGiftListViewController" bundle:nil];
//listViewController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[self.navigationController pushViewController:listViewController animated:YES];
[listViewController release];
希望这会有所帮助
【讨论】:
以上是关于通过标签栏和按钮导航屏幕的主要内容,如果未能解决你的问题,请参考以下文章