0

TableView に入るたびに配列にオブジェクトを追加するにはどうすればよいですか?

- (void)viewDidLoad
{
    [super viewDidLoad];

    if (!myArray) {
        myArray = [[NSMutableArray alloc] init];
    }
    [peopleListe insertObject:[NSDate date] atIndex:0];
    NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
    [self.tableView insertRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
    NSLog(@"%@",myArray);

}

このコードをボタンに配置すると機能します

ご協力ありがとうございました

4

2 に答える 2

3

viewDidLoadビューが読み込まれるときに一度呼び出されます。

viewWillAppearそのビューに入るたびに呼び出されます。

ビューが表示されるたびに何かをしたい場合は、コードを に入れますviewWillAppear

編集:配列が解放されている可能性があります。deallocそれが当てはまるかどうかを確認する簡単な方法として、ブレークポイントを設定してみてください。

- (void)dealloc {
    NSLog(@"BYE!); // <-- put your breakpoint here
}

そうである場合は、(a) データを別の場所に保存するか、(b) このビュー/コントローラーの割り当てが解除されないようにする必要があります。

また、あなたはtableViewDelegate誰ですか?それには、テーブル ビュー内の項目数などを返すメソッドを実装する必要があります。ドキュメントを読んで、これらすべての関係を整理することをお勧めします。

于 2013-11-11T21:33:28.740 に答える
2

その配列をView Controllerのプロパティ/ ivarとして持ちたくありません。ビュー コントローラは、使用されていないときに割り当て解除される場合があります (たとえば、ナビゲーション コントローラ内にあり、「戻る」ボタンをタップして前の画面に移動する場合)。ビュー コントローラが割り当て解除されると、配列は明らかに停止します。存在する。

その配列を別の場所に保持することをお勧めします。たとえば、シングルトン データ オブジェクト、または (短期的な解決策として) アプリ デリゲートなどです。


投稿したコードについて: [UIViewController viewDidLoad]View Controller のライフサイクル中に一度だけ呼び出されることに注意してください。複数回呼び出される場合がありますが、それは元のインスタンスが解放されたことを意味します (元の配列はなくなりました)。

于 2013-11-11T21:43:51.450 に答える