iPhone中的顺序(非分层)导航

时间:2010-09-10 14:58:14

标签: iphone

我对此感到沮丧。

我想创建一个iPhone应用程序来显示事件列表,每个“屏幕”一天。我想在顶部有一个“下一个”和“上一个”按钮,可以让我明天或昨天去。

UINavigationController样式导航,因为导航不是分层的。因此,我不认为我应该使用pushViewController:方法,正如许多示例和教程所示。

我认为appdelegate类应该删除当前视图并创建一个新的viewcontroller并查看并将其添加到窗口中。但是我无法让它发挥作用。我也想要很好的过渡。

有人可以指向我可以查看的代码示例吗?

谢谢。

Pd积。我的问题类似于this one ,但没有有用的答案。

2 个答案:

答案 0 :(得分:0)

我不会那么多地挂在视图控制器上。视图控制器/视图二元性有时会妨碍构建自定义接口。

你需要的是一个带有两个按钮的UIToolbar,以及为你的实体配置的UIView对象的排序数组。

然后当点击按钮时,简单的[UIVIew动画]应该完成工作。

我不会为你编写代码。任何对UIView动画组件构建的随意分析都会指引您前进。

我可以告诉你的唯一真实的事情是,为iPhone构建了复杂的界面,最大的学习曲线是知道何时何时不使用UIViewController而不是UIView。这很棘手,因为大多数标准苹果组件都使用Controller。

答案 1 :(得分:0)

现在它有效。只是缺少一些细节。我会在这里留下答案,以便其他人可以评论或使用它。

在AppDelegate类中,我添加了这个方法:

-(void) navigateToDay:(NSDate*) newDay fromDay:(NSDate*) currentDay
{
    UIViewAnimationTransition transition = ([newDay compare:currentDay]<0)? UIViewAnimationTransitionCurlDown :
        UIViewAnimationTransitionCurlUp;

    SequentialNavigationViewController* newController = [[SequentialNavigationViewController alloc] initWithNibName:@"SequentialNavigationViewController" bundle:nil];

    newController.app = self;
    newController.currentDay = newDay;
    [newController.view setFrame:[[UIScreen mainScreen] applicationFrame]];

    [UIView beginAnimations:@"transition" context:NULL];
    [UIView setAnimationDuration:0.50];
    [UIView setAnimationTransition:transition forView:self.window cache:YES];
    [window addSubview:newController.view];
    [self.viewController.view removeFromSuperview];
    [UIView commitAnimations];

    self.viewController = newController;
    [newController release];
   }

我从SequentialNavigationViewController prevButtonClicked和nextButtonClicked方法中调用此方法。

毕竟不是那么难!