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 を提案しましたが、私が持っているこのテーブルビューには、UIViews などを.mファイル内の私のプロパティにリンクする NIB 以外のものとの調整が難しい多くの固有のものがあります。

編集

たぶん私は自分自身を完全に説明していなかったので、ここに行きます.テーブル全体が画面から滑り落ちて別のテーブルに移行する外観が必要です. いいえ if's and's or but's. 行をスライドさせることを提案してくれた人たちに感謝します...しかし、彼らはこの柔軟性を提供しません...

私は恩知らずに見えたくありませんが、(UINavigationController 内に) UITableViw を含む 1 つのペン先/ビューを作成し、それを画面から押し出す方法を完全には理解していません-UITableView を含む同じペン先/ビューに置き換えます.

私が質問している理由は、マット、あなたの解決策は[swipeScheduleViewController release];、上記のコードで「コメントアウト」しない限り、 cellforRowAtIndexPathエラー中に「割り当て解除されたインスタンス」を取得することです。これは、iOS が swipeScheduleViewController をメモリに保持せず、解放しない限りインスタンス化していないことを示しているようです。オブジェクトを解放しないと、クラッシュが防止されます -- メモリ内のオブジェクトが発生し、メモリ リークが発生します。それが危険だと私が言った理由です(あなたの答えへのコメントで)ありがとう!

4

2 に答える 2

2

の使用を検討してくださいreloadRowsAtIndexPaths:withRowAnimation:。利用可能なアニメーションの 1 つは、右 (または左) からスライドインすることです。

于 2013-05-07T18:07:23.590 に答える