0

私は iCarousel ビューを持っていますが、それが何であるかわからない人のために説明すると、UITableView や UICollectionView のように機能します。よろしければ、私がそれらの 1 つを使用しているふりをすることができます。

とにかく、私の iCarousel にはすでにたくさんの項目があります。それらは、「items」という名前でグローバル NSMutableArray に定義されています。私の問題は、カルーセルから1分間ビューを切り替えると、元に戻すとアイテムが消えてしまうことです。これは、ビューを切り替えると、カルーセルの割り当てが解除されるか、参照が失われるためだと思います。リロードしようとすると、次のコードを使用します。

self.carousel = [[iCarouselExampleViewController alloc] initWithNibName:@"iCarouselExampleViewController" bundle:nil];
[self presentViewController:self.carousel animated:YES completion:nil];
[self.carousel.carousel reloadData];

このコードにより、空のカルーセルが表示されます。これは、前述のように、ビューへの参照を失い、initWithNibName 呼び出しで再割り当てする必要があったためだと思います。とにかく、どうすればそれを回避できますか?クラスにあったデータを失いたくありません。助言がありますか?そもそも、別のView ControllerからUITableViewに戻すにはどうすればよいですか?

4

2 に答える 2

1

iCarousel に入力するアイテムを保持するオブジェクトの割り当てが解除された場合、データ ソースを別の場所に保存できます。そのために CoreData の使用を検討できます。または、それに対処する必要がない場合は、AppDelegate で NSMutableArray を宣言するか、割り当てが解除されないことがわかっている同様の場所で宣言します。別のオプションは、そのためのシングルトンを作成することです。多くのオプションがあります。

お役に立てれば!

于 2013-09-18T17:28:49.600 に答える
0

プレゼンテーション中にカルーサルを作成すると、既存のカルーサルの割り当てが解除され、新しいカルーサルが作成されます。あなたの場合、プレゼンテーションを行うたびに割り当てる必要はないと思います。

if(self.carousel == nil) {
   self.carousel = [[iCarouselExampleViewController alloc]   initWithNibName:@"iCarouselExampleViewController" bundle:nil];
}
[self presentViewController:self.carousel animated:YES completion:nil];
[self.carousel.carousel reloadData];
于 2013-09-18T17:34:30.673 に答える