我希望使用 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 保存在内存中并实例化,除非我释放它。不释放它,从而防止崩溃——导致对象在内存中,从而导致内存泄漏。这就是为什么我说这样做很危险(在对您的回答的评论中)谢谢!