如何使用UISwipeGestureRecognizer滑动以滑入并刷新SAME uitableview

时间:2013-05-07 18:04:12

标签: ios sdk uiscrollview swipe uiswipegesturerecognizer

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

好的......这里更详细。我在UINavigationController中有一个UITableView。此表包含特定日期的数据 - 主要是像今天的笔记,会议的时间和日期等等。我想允许向右或向左滑动(使用UISwipeGestureRecognizer)触发当前表格的滑动和幻灯片新表与第二天的事件(或前一天......取决于方向)。我尝试这样做的方法只是在设置新日期(ScheduleViewController)后让当前newDate调用。好的,这很有效,KIND Of。 swipeScheduleViewController不会填满整个iphone屏幕。它缺少底部标签栏的区域...并且因为它位于UINavigationController中,返回此选项卡并且TO此选项卡会导致问题。加上这意味着当用户前进和后退时,非特定数量的新实例。这是站不住脚的。

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(不是问题),然后刷新当前表,(问题出现了:) SIMULATING 幻灯片人们期望的输入/输出功能。

或者我在想这个错误的方法吗?之前有人建议在水平滚动的UIScrollView中以编程方式创建UITableView - 但是这个tableview我有很多特定的东西,并且很难与除了将UIViews等链接到我.m内的属性的NIB之外的其他东西一起协调。文件

修改

也许我没有完全解释自己,所以这里说:我要求整个桌子的外观从屏幕滑落并转换到另一个。不,如果是,或者是。感谢那些建议滑行......但它们没有提供这种灵活性......

我不希望看起来忘恩负义,但我还没有完全理解让一个包含UITableViw(在UINavigationController中)的nib / view并将其推出屏幕的方法 - 用SAME nib / view替换它包含UITableView。

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

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

我建议您使用从上到下而不是从右到左的滑动,因为从右到左或从左到右滑动的正常惯例是从一个视图转换到另一个视图。这是the link重新刷新从上到下滑动的表格视图。希望它能帮到你