0

我按照AppCoda的本教程解决了我的 TabApplication 遇到的问题,它不是. 一个 webkit,我使用这种策略来解决我的标签标题不显示的问题。这是一个列出本地活动乐队的应用程序。所以你有:

 TabBarController > Nav1 > RELATIONSHIP > Home
                     > Nav2 > RELATIONSHIP > ARTISTS > UIBUTTON > push to new page.
                     > etc.

他们都工作得很好;如果我单击艺术家图像 (UIButton),它会将我带到他们的页面。顶部是横幅 (UIIMAGE),底部是 UISCROLLVIEW。

这是我的问题:如果我点击艺术家按钮,将 UIScrollView 滚动到底部,然后我通过点击另一个选项卡按钮离开页面我得到冲突:当我点击按钮返回艺术家列表时(未指定艺术家)它把我带到了我离开的地方,在 UIScrollView 的底部和带有链接的标签栏之间有一个尴尬的差距。

有没有办法可以指定返回到带有 6 个 UIBUTTONS 的艺术家页面?甚至 GET RID 屏幕底部的 TabBar 选项?我不知道如何编写 UISCROLLVIEW,我只是使用 Storyboard 来绘制 ScrollView,因为这是我永远无法解决的一件事。

___________________________________

|                                 |
|_________ARTIST____________NAME__|
|                                 |
|            :)                   |
|                                 |
|                                 |
|                                 |
|                  :)             |
|_________________________________|
|                                 |
|                                 |
|   .....UISCROLLVIEW             |
|_________________________________|
|MAKE_BLANK __BAR_____NO LINKS____| Sorry for the horrible example.
4

1 回答 1

0

据我了解,您的导航问题是这样的:

在选项卡 2 上,您有一个导航控制器,其初始 viewController 是艺术家姓名的列表。如果您选择艺术家姓名,您将转到第二个 viewController(仍在选项卡 2 中),它会显示艺术家的详细信息。

现在,如果您导航到选项卡 1,执行其他操作,返回选项卡 2,您希望确保看到带有艺术家姓名列表的初始 viewController,而您将返回到您离开的同一艺术家页面。这会使您的应用程序处于导航不佳的状态(带有故障的滚动视图)。

因此,您要做的是阻止用户从艺术家页面上跳开,这样他们就被迫从他们可以在其他地方跳出的艺术家列表返回。

您可以通过从初始 viewController 中呈现艺术家 viewController 来实现这一点,而不是送到 navigationController 的 viewControllers 堆栈(我假设您现在正在这样做)。

为此,您实际上并没有使用 tab2 中的导航控制器,因此您可能会选择摆脱它(除非您出于其他原因想要顶部导航栏)。

在代码中

从艺术家姓名视图控制器,制作一个带有动作的按钮:

- (IBAction) presentArtistsDetailViewController:(id)sender
{
     ArtistsDetailViewController* artistsDetailViewController = [ArtistsDetailViewController alloc] init];

     //set up artistsDetailViewController properties here

     [self presentViewController:artistsDetailViewController animated:YES completion:nil];
}

使用故事板

代替代码,您可以将一条转场线从按钮拖到您的艺术家详细视图控制器,选择转场类型modal。如果您需要在 中初始化属性artistsDetailViewController,可以在prepareForSegue

你会看到这种类型的导航使用默认的上滑动画来显示新的 viewController,并且整个屏幕都发生了变化——你失去了你的标签栏。modalTransitionStyle您可以通过将属性设置为 on来更改动画artistsDetailViewController

导航返回是通过添加一个“关闭”按钮来控制的,IBAction 是这样的......

  - (IBAction) dismiss:(id) sender
  {
    [self.presentingViewController dismissViewControllerAnimated:YES completion:nil]
  }

如果您的用户位于最初的艺术家姓名视图控制器上,您的用户现在只能从选项卡 2 离开。您的滚动视图不会出现故障,因为每次您进入艺术家详细信息页面时,您都在重新创建和重新初始化它。这并没有解决您的应用程序的其他部分,您可能会遇到滚动视图问题(正如您在评论中所建议的那样),但这是一个单独的问题,我想解决您的导航逻辑。

这样,您将不会在艺术家DetailViewController 的顶部获得导航栏,因为不涉及导航控制器。如果你想要一个导航栏,你可以手动放置到情节提要中的 viewController 上。

于 2013-01-28T20:37:06.807 回答