0

5 つのオブジェクトを持つ NSArray があります。

NSArray *tmpArry2 = [[NSArray alloc] initWithObjects:@"test1", @"test2", @"test3", @"test4", @"test5",nil];

4 つのセクションを持つテーブルがあります (スクリーンショットを参照)

見せたいのは

  • 最初のセクションの test1
  • 2 番目のセクションの test2 と test3
  • 3 番目のセクションの test4
  • 第4セクションのtest5

ここに、それぞれの index.row と index.section があるという問題があります。

indexPath.row: 0 ... indexPath.section: 0
indexPath.row: 0 ... indexPath.section: 1
indexPath.row: 1 ... indexPath.section: 1
indexPath.row: 0 ... indexPath.section: 2
indexPath.row: 0 ... indexPath.section: 3

indexPath.section を使用して tmpArry2 の値を取得することを望んでいましたが、どうすればそれができるかわかりません。グローバル static int counter = 0; を作成することを考えました。cellForRowAtIndexPathでインクリメントし続けますが、問題は、上下にスクロールすると値がセル間でジャンプし続けることです。

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

    //NSLog(@"Inside cellForRowAtIndexPath");

    static NSString *CellIdentifier = @"Cell";

    // Try to retrieve from the table view a now-unused cell with the given identifier.
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    // If no cell is available, create a new one using the given identifier.
    if (cell == nil)
    {
        // Use the default cell style.
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
    }

    NSLog(@"indexPath.row: %d ... indexPath.section: %d ...", indexPath.row, indexPath.section);

//this will not give me right results
//NSString *titleStr2 = [tmpArry2 objectAtIndex:indexPath.section];


}

ここに画像の説明を入力

4

2 に答える 2

4

次のコードが役立つはずですが、tmpArry2 と cellForRowAtIndexPath メソッドの countDownArray にタイトルがある理由がわかりませんでした。コードのどこかで名前を変更すると仮定します。

次のコードを cellForRowAtIndexPath メソッドに配置すると、機能するはずです。

NSInteger index = 0;
for (int i = 0; i < indexPath.section; i++) {
    index += [self tableView:self.tableView numberOfRowsInSection:i];
}
index += indexPath.row;
cell.textLabel.text = [countDownArray objectAtIndex:index];
于 2013-01-22T18:05:21.220 に答える
0

サブ配列を持つように tmpArry2 の構造を変更する必要があると思います。これは、セクションを作成する通常の方法の 1 つです。したがって、配列は次のようになります (配列の新しい表記法を使用)。

NSArray *tmpArry2 = @[@[@"test1"], @[@"test2", @"test3"], @[@"test4"], @[@"test5"]];

これにより、それぞれが配列である 4 つのオブジェクトを含む配列が得られます。次に、データ ソース メソッドで次のようにします。

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return tmpArry2.count;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return [tmpArry2[section] count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];

    cell.textLabel.text = tmpArry2[indexPath.section][indexPath.row];
    return cell;
}
于 2013-01-22T18:05:24.653 に答える