0

今日、再現できないバグに遭遇し、非常に混乱しています。わかりました少し背景:

私は現在、タブバーコントローラーを初期ビューコントローラーとして持つアプリに取り組んでいます。さまざまなタブ バー項目に接続された複数のナビゲーション コントローラーがあります。

それらの 1 つは、JSON から入力される tableViewController です。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{

static NSString *simpleTableIdentifier = @"SimpleTableItem";
   SimpleTableCell *cell = (SimpleTableCell *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];

if (cell == nil)
{
    NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"SimpleTableCell" owner:self options:nil];
    cell = [nib objectAtIndex:0];
}   

     //NSMutableArray for storing loaded values
[pics addObject:imageLoad];
[names addObject:[aucdict objectForKey:@"name"]];
[idcka addObject:[aucdict objectForKey:@"auction_id"]];

  // Configure the cell...
cell.nameLabel.text = [aucdict objectForKey:@"name"];
cell.priceLabel.text = [NSString stringWithFormat:@"%@",priceString];
cell.timeLabel.text = [NSString stringWithFormat:@"%@",timeString];

cell.thumbnailImageView.image = imageLoad;



return cell;}

行をクリックした後、performSegueWithIdentifier を実行します。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
[self performSegueWithIdentifier:@"showAuctionDetail" sender:self];}

そして prepareForSegue で、次の ViewController にいくつかのデータを送信します

-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 

{

namesArray = [[NSArray alloc] initWithArray:names];
picsArray =[[NSArray alloc] initWithArray:pics];
IDarray = [[NSArray alloc] initWithArray:idcka];
if ([segue.identifier isEqualToString:@"showAuctionDetail"])
{
    NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
    detailViewController *dViewController = segue.destinationViewController;
    dViewController.selectedAuctionTitle = [namesArray objectAtIndex:indexPath.row];
    dViewController.auctionPic = [picsArray objectAtIndex:indexPath.row];
    dViewController.id_aukcie = [IDarray objectAtIndex:indexPath.row];
}}

今私の問題が来ます。ときどき (いつ発生するか分からないので、これは本当に混乱します) アプリケーションを起動して行をタップすると、まったく異なるデータが DetailViewController に渡されます。推測できる唯一のことは、配列が実際の JSON 応答とは異なる (値が多かれ少なかれ含まれている) ことです。しかし、それは、テーブルの最初または最後の項目 (境界外のインデックスなど) をクリックすると、アプリがクラッシュすることを意味しますが、それは決して起こりませんでした。

このバグがおそらく 5 回ランダムに発生するのを見てきました。アプリを 20 回続けて実行して終了しようとしましたが、それは 1 回だけでした。

PSクラス名(detailViewController)は大文字で始まる必要があることを知っています。申し訳ありません:)

編集:rdelmarが示唆したように

4

1 に答える 1

1

問題は、cellForRowAtIndexPath: メソッドでサーバーを呼び出すことだと思います。そのコードをviewDidLoadに入れ、データが戻ってきて解析が終了したら、テーブルビューでreloadDataを呼び出します。

于 2012-11-08T17:06:55.527 に答える