2017-02-03 7 views
0

このデータソースは、カスタムオブジェクトで構成されたNSArrayです。UITableViewのセクション内の行に関連付けられたオブジェクトのプロパティを取得します。

ソースをUITableViewに表示します。オブジェクトのプロパティに基づいて、テーブルビューはセクションに分割されます。

何とか、ユーザーが行を選択したときに正しいオブジェクトを取得する方法がわかりません。

プロパティを変更するには、選択したオブジェクトを見つける必要があります。その後、UITableViewを再構築できます。

私はそれが何か簡単だと確信しています。私を助けてください!

+0

すべての誰もが3つのデータソースの方法に含まれることになるのを助けるために知っておく必要があります。それらを貼り付けると、数秒でヘルプが表示されます。 – danh

答えて

0

デリゲート機能didSelectRowAtIndexPathを使用して、それからindexPathののようなカスタムオブジェクトを取ります。今のところ、これらのオブジェクトをどのように格納するかについて言及していないと伝えるのは難しいです。

+0

セクションとセクション内の行だけを返します。私はその情報を使ってデータソースから関連するオブジェクトを取得する方法を理解していません – Sjakelien

+1

データソースの中にそれらをどのように格納するかによって異なります。他の方法は、特定のセルを描画するときに、カスタムセルクラスにデータソースタイプを指定してフィールドを追加し、セルに割り当てることができます。 –

+0

また、あなたのdataSourceからdictを作成し、それを[SectionRow、object]のように保持すると、私が述べたdidSelectメソッドから取得できます。 –

0

あなたのデータソースは、このようなものであることを推測:あなたはのUITableViewの1つのデリゲートメソッドのindexPath.rowパラメータでNSArrayのから特定の値にアクセスすることができます

self.dogs = [[NSArray alloc] initWithObjects:@"Affenpinscher",@"Afghan Hound",@"Alaskan Malamute", nil]; 

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ 

    NSString *dogDreed = [self.dogs objectAtIndex:indexPath.row]; 

    NSLog(@"Dreed of dog selected: %@", dogDreed); 
} 
0

OK、次のようにしました(簡略化):

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

    myObject *theObject = [arrayOfObjects objectAtIndex:indexPath.row]; 
    cell.tag = theObject; 
    return cell; 

} 

デルは、それを取得するために、私が行いますnumberOfSections、numberOfRowsInSection、cellForRowAtIndexPath:

// (called from a UITableView delegate) 

-(void)identifyObject:(id)indexPath{ 
    UITableViewCell *selectedCell = [myTableView cellForRowAtIndexPath:indexPath]; 

    int hash = selectedCell.tag; 
    NSPredicate *cellHashFilter = [NSPredicate predicateWithFormat:@"hash == %i", hash]; 
    myObject *theEvent = [arrayOfObjects filteredArrayUsingPredicate:cellHashFilter][0]; 

    //doing some stuff here 
    [self refreshTable]; 
} 
関連する問題