0

我希望使用 UISwipeGestureRecognizer 的滑动来更新 UITableView……并让它看起来像是从右侧(或左侧)滑入,然后只需用新数据刷新当前 UITableView 的数据。

好的...这里更详细。我在 UINavigationController 中有一个 UITableView。该表包含特定于日期的数据——主要是今天的笔记、会议的时间和日期等。我想允许向右或向左滑动(使用 UISwipeGestureRecognizer)触发当前表的滑动和滑动与第二天的事件(或前一天......取决于侧面方向)的新表。我尝试这样做的方式只是在ScheduleViewController设置新日期之后让当前调用本身(newDate)。好的,这行得通,有点。swipeScheduleViewController 不会填满整个 iphone 屏幕。它缺少底部的选项卡栏区域......并且因为它位于 UINavigationController 中,因此从该选项卡返回到该选项卡会导致问题。另外,这意味着随着用户在时间上前进和后退,新实例的数量会非常大。这是站不住脚的。

ScheduleViewController *swipeScheduleViewController = [[[ScheduleViewController alloc] initWithNibName:@"ScheduleView-iPhone" bundle:nil] retain];
swipeScheduleViewController.newDate = [NSDate date]; // (increment this or decrement it)
CATransition *transition = [CATransition animation];
transition.duration = 0.75;
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
transition.type = kCATransitionPush;
transition.subtype = kCATransitionFromLeft;
transition.delegate = self;
[self.view.layer addAnimation:transition forKey:nil];
[self.view addSubview:swipeScheduleViewController.view];
//[swipeScheduleViewController release]; // <-- leaving this in causes crash due to "Deallocated instance" during cellforRowAtIndexPath

所以,然后我在想:有没有办法设置newDate(不是问题)然后刷新当前表,(问题来了:)模拟人们期望的滑入/滑出功能。

还是我认为这是完全错误的方式?之前有人建议在水平滚动的 UIScrollView 中以编程方式创建 UITableView - 但是这个 tableview 我有很多特定的东西,除了将 UIView 等链接到.m文件中我的属性的 NIB 之外,很难与其他任何东西协调

编辑

也许我没有完全解释自己,所以这里是:我需要整个桌子从屏幕上滑下来并过渡到另一个的样子。没有如果的和的或但是的。感谢那些建议滑动行的人......但他们不提供这种灵活性......

我不想显得忘恩负义,但我并不完全理解拥有一个包含 UITableViw(在 UINavigationController 内)的笔尖/视图并将其推离屏幕的方法——用包含 UITableView 的相同笔尖/视图替换它.

我质疑的原因,马特,你的解决方案是,除非我没有[swipeScheduleViewController release];在上面的代码中“注释掉”,否则我会在 cellforRowAtIndexPath错误期间得到“Deallocated instance”。这似乎表明 iOS 没有将 swipeScheduleViewController 保存在内存中并实例化,除非我释放它。不释放它,从而防止崩溃——导致对象在内存中,从而导致内存泄漏。这就是为什么我说这样做很危险(在对您的回答的评论中)谢谢!

4

2 回答 2

2

考虑使用reloadRowsAtIndexPaths:withRowAnimation:. 可用的动画之一是从右侧(或左侧)滑入。

于 2013-05-07T18:07:23.590 回答
0

我建议您使用从上到下而不是从右到左滑动,因为从右到左或从左到右滑动的正常惯例是从一个视图过渡到另一个视图。这是从上到下滑动时 rehresh tableview的链接。希望对你有帮助

于 2013-05-07T18:17:00.320 回答