0

異なるセル識別子を持つカスタム UITableView を作成しようとしています。最初のセルには画像が表示され、残りのセルに続くように下に表示されます。ただし、スクロール後に表示された画像が消えます。同様の問題について他の人が提供した回答を探して解決しようとしましたが、成功しませんでした。

これがコードです。

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    EventoCell *cell;
    static NSMutableString *CellIdentifier;
    if(i==0){
        CellIdentifier = @"imgCell";
        cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

        i++;
    }
    else{
       CellIdentifier = @"CellaEvento";
       cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

       cell.Nome.text=[[AShow objectAtIndex:indexPath.row]GetEvento];
       cell.Localita.text=[[AShow objectAtIndex:indexPath.row]GetLocalita];
       cell.Ora.text=[NSString stringWithFormat:@"%d:%d",[[AShow objectAtIndex:indexPath.row]GetOra],[[AShow objectAtIndex:indexPath.row]GetMinuti]];

       [cell setValue:[[AShow objectAtIndex:indexPath.row]GetEvento] :[[AShow objectAtIndex:indexPath.row]GetGiorno] :[[AShow objectAtIndex:indexPath.row]GetMese] :[[AShow objectAtIndex:indexPath.row]GetAnno] :[[AShow objectAtIndex:indexPath.row]GetOra] :[[AShow objectAtIndex:indexPath.row]GetMinuti]];

    }
    return cell;
}
4

2 に答える 2

0

最初の行に画像を表示しますか? もしそうなら、1行目かどうかを判断する行を1行目から変更できると思います。

if ( i==0 )

if (indexPath.row == 0 && indexPath.section == 0)

i はクラスのメンバーでなければならないと思います。UITableViewは限られた数ののみを作成しますUITableViewCell。通常、この数は表示行数と同じです。たとえば、画面に 10 行しか表示できない場合は、UITableView10 個のセルを作成します。スクロール後、 を呼び出して作成されたセルを再利用しdequeueReusableCellWithIdentifier:forIndexPathます。これにより、画面外にある行がセルを解放します。スクロールバックすると、「新しい」入力項目ごとにセルが必要になります。は新しいセルUITableViewを呼び出します。tableView:cellForRowAtIndexPathしたがって、シナリオとして、最初にのみ画像行を表示できます.

于 2012-08-01T12:32:39.740 に答える
0

コードで「i」がインスタンス変数として使用されたと思います。- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath代わりに、メソッドの引数として渡される indexPath 変数に依存する必要があります。

テーブル ビューの最初の項目は、次のように識別されます。

 indexPath.row == 0 and indexPath.section == 0

.row は、特定のセクション内の行インデックスです。

セクション内の行数とセクション数をそれぞれ正しく識別するために、これら 2 つのデリゲート メソッドを正しく実装していることを確認してください。

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
于 2012-08-01T12:59:03.230 に答える