0

セルがタップされたときに別のUITableViewControllerを表示するUITableViewControllerがあります。インスタンス化されたときに新しいUITableViewControllerに渡したいNSMutableArrayがあります。

私は通常次のようなことをします:

- (void)loadStationList {

 StationListView * listView = [[StationListView alloc] initWithNibName:@"StationListView" bundle:nil];
 listView.dataList = newParser.stationData;
 // ...
 // Pass the selected object to the new view controller.
 NSLog(@"New Parser is %d", [newParser.stationData count]); //This is fine - all objects in array here.
 [self.navigationController pushViewController:listView animated:NO];

}

奇妙なことに、dataList(新しいクラスのNSMutableArrayポインター)が空です(行数のデリゲートメソッドをチェックしています)。

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
// Return the number of rows in the section.
NSLog(@"Data List is %d", [dataList count]);
return [dataList count];

}

私はいくつかの異なるアプローチ(親クラスで新しいNSMutable配列をインスタンス化するなど)を試しましたが、何も機能しないようです。私はまだARCに比較的慣れていないので、これはARCに関連している可能性があります。誰か助けてもらえますか?

4

2 に答える 2

0

どのように宣言dataListしましたnewParser.stationDataか?このようなsthである必要があります

@property (nonatomic, strong) NSMutableArray       *dataList;

とにかく、値を失わないようにするために、各要素をからにコピー/割り当てることができnewParser.stationDataますdataList。ここみたいに:

    NSMutableArray * dataList = [[NSMutableArray alloc] init];
    for (id arrayElement in newParser.stationData) {
        [dataList addObject:arrayElement];
            }

単純な割り当ての代わりにこれを試してくださいlistView.dataList = newParser.stationData;。psは効率について心配する必要はありません。これは非常に高速なので、問題にはなりません。

于 2012-09-02T09:59:01.117 に答える
0

アプリのデリゲートでインスタンス変数を作成し、そこから配列を保存して読み取ることで、これを回避しました。これはアークのバグのように見えます - 他の変数タイプで動作します。

于 2012-09-02T20:50:29.587 に答える