0

我有一个 UITableViewController,当点击一个单元格时它会显示另一个 UITableViewController。我有一个 NSMutableArray,我想在实例化时将其传递给新的 UITableViewController。

我通常会做类似的事情:

- (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?应该是这样的

@property (nonatomic, strong) NSMutableArray       *dataList;

无论如何,为确保您不会丢失任何值,您可能希望将每个元素从 复制/分配newParser.stationDatadataList。像这儿:

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

试试这个,而不是简单的 assignment listView.dataList = newParser.stationData;。ps不要担心效率,这太快了,没关系。

于 2012-09-02T09:59:01.117 回答
0

好吧,我通过在应用程序委托中创建一个实例变量然后从那里保存和读取数组来解决这个问题。这看起来确实像 arc 中的错误 - 它适用于其他变量类型。

于 2012-09-02T20:50:29.587 回答