故事板 - UIScrollView恐慌?

时间:2013-01-28 19:56:10

标签: ios5 ios6 tabs uiscrollview scroll

我从AppCoda开始遵循本教程来解决我在TabApplication中遇到的问题,它是 NOT 。一个webkit,我使用这个策略来解决我没有显示的标题。     这是一个列出本地事件乐队的应用程序。所以你有:

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

他们都工作得非常好;如果我点击一个艺术家形象(UIButton)它会把我带到他们的页面。顶部是横幅(UIIMAGE),底部区域是UISCROLLVIEW。

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

我有没有办法指定使用6 UIBUTTONS返回Artist页面?甚至可以在屏幕底部获取TabBar选项的RID?我不知道如何编写UISCROLLVIEW代码,我只是使用Storyboard来绘制ScrollView,因为这是我无法解决的一件事。

___________________________________

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

1 个答案:

答案 0 :(得分:0)

据我所知,你的导航问题是:

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

现在,如果您导航到选项卡1,执行其他操作,请返回选项卡2,您希望确保向您显示带有艺术家名称列表的初始viewController,而您将返回到同一艺术家的页面已走了。这会使您的应用处于导航状态不佳的状态(带有毛刺的滚动视图)。

因此,您要做的是阻止用户从艺术家页面中跳出标签,以便他们被迫返回艺术家列表,从可以标签到其他位置。

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

要做到这一点,你实际上并没有在tab2中使用导航控制器,所以你可能会选择摆脱它(除非你出于其他原因需要顶级导航栏)。

代码

从artistsNamesViewController,创建一个带动作的按钮:

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

     //set up artistsDetailViewController properties here

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

使用故事板

您可以将segue线从按钮拖到artistDetailViewController,而不是代码,选择segue type modal。如果您需要在artistsDetailViewController中初始化属性,可以在prepareForSegue

中执行此操作

您将看到此类导航使用默认的上滑动画来显示新的viewController,整个屏幕也会发生变化 - 您将丢失标签栏。您可以通过在modalTransitionStyle上设置artistsDetailViewController属性来更改动画。

通过添加'dismiss'按钮来控制导航,使用类似这样的IBAction ......

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

如果您的用户位于最初的artistsNamesViewController上,那么您现在只能从标签2中跳出标签。您不会在scrollView中出现故障,因为每次进入艺术家详细信息页面时,您都会重新创建并重新初始化它。这不会解决您的应用程序中可能遇到问题scrollView的其他部分(正如您在评论中所建议的那样),但这是一个单独的问题,我想解决您的导航逻辑。

您不会以这种方式在artistsDetailViewController顶部获得导航栏,因为不涉及导航控制器。如果需要导航栏,可以手动将其放在故事板中的viewController上。