这个问题不太可能帮助任何 future 的访客;它只与一个小地理区域、一个特定时刻或一个非常狭窄的情况相关,而这些情况通常不适用于互联网的全局受众。如需帮助使这个问题更广泛地适用,visit the help center .
8年前关闭。
我希望使用 UISwipeGestureRecognizer 的滑动来更新 UITableView……并让它看起来像是从右侧(或左侧)滑入,然后简单地用新数据刷新当前 UITableView 的数据。
好的...这里更详细。我在 UINavigationController 中有一个 UITableView。该表包含特定日期的数据——主要是今天的笔记、 session 的时间和日期等。我想允许向右或向左滑动(使用 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 有很多特定的东西,除了将 UIViews 等链接到我的
.m
文件编辑
也许我没有完全解释自己,所以这里是:我需要整个 table 从屏幕上滑下来并过渡到另一个的样子。没有如果的和的或但是的。感谢那些建议滑动行的人......但他们不提供这种灵 active ......
我不想显得忘恩负义,但我并不完全理解拥有一个包含 UITableViw(在 UINavigationController 内)的 Nib / View 并将其推离屏幕的方法——用包含 UITableView 的相同 Nib / View 替换它.
我质疑的原因,马特,你的解决方案是,除非我不“注释掉”
[swipeScheduleViewController release];
在上面的代码中,我得到 cellforRowAtIndexPath 期间的“已释放实例”错误。这似乎表明 iOS 没有将 swipeScheduleViewController 保存在内存中并实例化,除非我释放它。不释放它,从而防止崩溃——导致对象在内存中,从而导致内存泄漏。这就是为什么我说这样做很危险(在对您的回答的评论中)谢谢!
最佳答案
考虑使用 reloadRowsAtIndexPaths:withRowAnimation:
.可用的动画之一是从右侧(或左侧)滑入。
关于ios - 如何使用 UISwipeGestureRecognizer 滑动以滑入并刷新相同的 uitableview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16425677/