0

私の質問は明確です、

注釈付きの UITableView と UIMapView があります。マップ上で注釈をタップすると、ユーザーが認識できるため、テーブル上で検出され、選択されます。

しかし、何かを試してみると、それは目に見えるセルにしかなく、期待どおりにできません。

 - (void)annotationTapped:(UITapGestureRecognizer *)recognizer{
    if ( recognizer.state == UIGestureRecognizerStateEnded ) {

    //NSLog(@"%@",[recognizer.view subviews]);

    UIImageView *temp = (UIImageView*)[recognizer.view viewWithTag:1000];

    UILabel *temp2 = (UILabel*)[temp viewWithTag:1001];

    NSArray *tapAndFind;


    if(isFiltered)
    {
        tapAndFind = filteredListContent;
    }
    else
    {
        tapAndFind = eczaneler;
    }

    for(int i=0;i<tapAndFind.count;i++)
    {

        Pharma *tempPharm = [tapAndFind objectAtIndex:i];

       if([tempPharm.CustomerIndex isEqualToString:temp2.text])
       {               
           EczaneCell *cell = (EczaneCell*)[tableView1 cellForRowAtIndexPath:[NSIndexPath indexPathForRow:i inSection:0]];




           for(EczaneCell * cell2 in [tableView1 visibleCells])
           {
               cell2.selected = NO;
           }


           cell.selected = YES;

           NSIndexPath *indexPath = [NSIndexPath indexPathForRow:[tableView1 indexPathForCell:cell].row
                                                       inSection:[tableView1 indexPathForCell:cell].section];

           [tableView1 scrollToRowAtIndexPath:indexPath
                                                 atScrollPosition:UITableViewScrollPositionTop animated:YES];

           } 
        }

    }
}
4

1 に答える 1

1

これはUITableView、データ自体ではなく、データのプレゼンテーションにすぎないためです。したがって、注釈をタップすると、データとの対応、コレクション内の注釈データの位置を何らかの方法で見つける必要があります。次に、テーブル内の行のインデックスを計算/見つけることができ、それから を実行できUITableViewますscrollToRowAtIndexPath:atScrollPosition。または、セルをマークして区別できるようにすることもできます。

あなたのコードで

EczaneCell *cell = (EczaneCell*)[tableView1 cellForRowAtIndexPath:[NSIndexPath indexPathForRow:i inSection:0]];

指定されたインデックス パスのセルが非表示nilの場合に返すことができます。cellそのため、表のセルではなく、データに対してチェックする必要があります。

于 2013-09-10T06:33:10.090 に答える