0

たとえば、記事が 3 つあり、記事を表示するときに、最初のセルの前にもう 1 つセルを表示したいとします (合計 4 つになります)。

配列にない最初の記事を表示し、次に配列にある記事を表示する必要があります。

アップデート

ここに画像の説明を入力

私は次に試しました:

- (NSInteger)tableView:(
UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

    return ([arr count] + 1);

}

しかし、私のアプリは時々クラッシュし、NSLOG を見て、[tableView reloadData] を呼び出す前にそのアプリが cellForRowAtIndexPath に入ります。

4

4 に答える 4

2

これは本当にやってはいけないことです。

さて、(-tableView:cellForRowAtIndexPath: から) ビューを返すことで、フレームワークをごまかすことができます。このビューには、「最初の記事」セルと元の最初のセルの 2 つのサブビューが含まれます。-tableView:heightForCellAtIndexPath: も変更することを忘れないでください (そうしないと、ビューが切り取られます)。

ただし、一般的には、テーブル ビューの背後にあるデータ モデルを変更して 4 つのセルを表示する必要があります。これは、より有効なアプローチです。

于 2012-11-09T12:51:27.957 に答える
1

を使用して配列に追加の値を追加する必要がありますinsertObject

[arr insertObject:[NSNull null] atIndex:0];

そして、次のようなメソッドを実装します。

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

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil)
    {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }
    if([arr onjectAtIndex:indexPath.row] == [NSNull null])
    {
      // 1st cell extra cell do your stuff
    }
    return cell;
}
于 2012-11-09T12:59:19.650 に答える
1

あなたはこのようにすることができます:

このメソッドを使用して追加の行を返します:

// Each row array object contains the members for that section
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{
     return [YouArray count]+1; 
}

最後に、この追加された行を確認します。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
// Create a cell if one is not already available
    UITableViewCell *cell = [self.mContactsTable dequeueReusableCellWithIdentifier:@"any-cell"];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"any-cell"] autorelease];
         }

     //Identify the added row
     if(indexpath.row==0)
     {
        NSLog(@"This is first row");
     } 
     else{
      // Write your existing code

     }

}
于 2012-11-09T12:58:37.067 に答える
0

すべての記事を配列に保持していますか? 新しい記事も配列に追加する必要があります。配列はデータソースです。一番上のセルに表示したい場合は、新しい記事を配列の最初の要素として挿入したいと思うでしょう。配列を更新したらすぐに、[mytableView reloadData]すべてのデータソース メソッドが呼び出されるトリガーとなる を呼び出して、テーブルのデータをリロードする必要があります。

于 2012-11-09T12:50:42.300 に答える