0

私はiphoneを初めて使用します。少し疑問があります。つまり、最初は66行のテーブルビューがあり、すべての行に進行状況ビューを配置しましたが、viewdidload以下のようにすべての行に対して非表示に設定しましたtableViewClassShowProgressViewCont

cell.progressView.hidden = YES;

ここ(セル)はCustomCellクラスの参照です。このクラスでは、進行状況ビューを宣言し、セッターとゲッターのプロパティもこのクラスで設定されます。

ここのテーブルビューでは、各セルにダウンロードボタンがあります。そのダウンロードボタンをクリックすると(たとえば、66番目のセル)、その特定の66番目のセルの進行状況ビューに非表示のプロパティを削除する必要があります。残りの65個のセルはすべてのセルについて、そのようにのみ進行状況ビューを非表示にします。

誰かがこれを知っているなら私を助けてください....

4

5 に答える 5

2

表のセルを再利用するという概念に精通していますか?

viewDidLoad は、単一セルのコンテンツを操作するのに適切な場所ではありません。テーブルが小さすぎてすべてのセルが画面に収まる場合 (両方の向きで) は、問題なく動作する可能性があります。画面に表示されているよりも多くのセルがテーブルにある場合、最近非表示になったセルが再利用され、再度表示されます。そのため、一度に画面に 6 つのセルがある場合、表のセルはありません。7 (場合によっては 8) はセル番号と同じになります。1.

cellForRowAtIndexPath は、セルの特定のビューを非表示/非表示にするのに適した場所です。すでにカスタム セルである場合は、セルの layoutSubViews も適切である可能性があります。ただし、tableViewController の cellForRowAtIndexPath でのみ、テーブルのデータと関連するセルの両方に簡単にアクセスできます。

cellForRowAtIndexPath は、セルが表示されようとするたびに呼び出されます。デフォルトの reusing-mechanism を使用して、適切なセル オブジェクトが再利用されるようにします。それはかなり簡単です。

于 2012-06-27T10:28:34.660 に答える
0

インデックス 65 のセルを取得し、それをカスタム セルにキャストします。

UITableViewCell *cell = [tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:64 inSection:0]];

YourCustomCell *customCell = (YourCustomCell *)cell;
customCell.progressView.hidden = NO;
于 2012-06-27T09:55:26.370 に答える
0

カスタムセルで進行状況ビューを非表示にすると、すべての進行状況ビューのデフォルトプロパティが非表示になり、ボタンクリックメソッドが表示されます。

CutomeCell *cell = (CutomeCell *)[[button superview] superview];
[cell.progressView setHidden:NO];
NSIndexPath *rowToReload = [[self tableView] indexPathForCell:cell];
NSArray* rowsToReload = [NSArray arrayWithObjects:rowToReload, nil];
[UITableView reloadRowsAtIndexPaths:rowsToReload withRowAnimation:UITableViewRowAnimationNone];

これはあなたを助けるかもしれません...

于 2012-06-27T10:08:50.313 に答える
0

まず、CellForRowAtInedexPath のダウンロード ボタンに行番号を設定します。

   downloadButton.tag = indexPath.row
   [downloadButton addTarget:self action:@selector(actionDownload:) forControlEvents:UIControlEventTouchUpInside];

actionDownload で、button.tag から IndexPath を作成し、「cellForRowAtIndexPath:」からセルを取得し、最後に reloadRowsAtIndexPaths: withRowAnimation を介して更新します。

于 2012-06-27T10:01:27.667 に答える
0

モデルは、クリックされたすべてのボタンの進行状況を追跡する必要があります。この回答のために、モデルが modelInformationArray というプロパティに保持されているとしましょう (これには、テーブル内の各セルに関連するオブジェクトの配列が含まれます)

セルのダウンロード ボタンがクリックされると、modelInformationArray は、ダウンロードが処理されていることをそのオブジェクトが認識できるように変更されます。

そのオブジェクトは、downloadingProcessingStarted というメンバーでダウンロード処理を報告します。その部分を行うには、他にも多くの方法があります。

あなたの質問への答えを得るには…その後、進行状況ビューを再表示するには、 tableView:cellForRowAtIndexPath: の UITableViewDataSource 実装で次のようにします。

- (UITableViewCell*)tableView:tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath {
    YourCustomCell* cell = ...
    if ([[self.modelInformationArray objectAtIndex:indexPath.row] downloadingProcessingStarted])
        cell.progressView.hidden = NO;
}
于 2012-06-27T10:32:30.853 に答える