9

テーブルビューベースのiOSアプリを作っています。これが私がやりたいことです。Tableview1 -> Tableview2 tableCell の 1 つを選択すると、新しい tableView2 が表示されます。新しい tableView が表示される前にセルをハイライトしたいと思います。それにもかかわらず、新しい tableView データをロードするため、hilight は非常に遅くなります。これを調べました。その理由はprepareForSegue前に呼び出されdidSelectRowAtIndexPathます。

didSelectRowAtIndexPathでは、その前に電話する方法を教えていただけますprepareForSegueか?

または、セルが選択されたときに表のセルを設定する方法を教えてください。

ではごきげんよう。

4

4 に答える 4

20

あなたはそれを行うために2つの異なる方法を噛み合わせています。

1 - 最初の選択肢 - ストーリーボードのみを使用し、prepareForSegue:

プロトタイプ セルをストーリーボードの 2 番目のビュー コントローラーに接続します (接続はセルから開始し、2 番目のビュー コントローラーで終了する必要があります)。この場合、didSelectRowAtIndexPath ではなく、prepareForSegue メソッドのみを使用する必要があります。2 番目の VC は、prepareForSegue の後に自動的にプッシュされます。

2 - 2 番目の代替手段 - didSelectRowAtIndexPath を使用します。

didSelectRowAtIndexPath を使用するのは、(セルからではなく)最初のビューコントローラーからのセグエを2 番目のビューコントローラーに接続する場合のみです。didSelectRowAtIndexPath メソッドの最後で、performSegue を呼び出す必要があります。

于 2012-11-05T16:00:36.773 に答える
2

必要なのは次の関数です。prepareForSegue の前に呼び出されます。まず、クラスで var を定義してから、次のようにこの関数に設定する必要があります。

var selectedIndexPath: NSIndexPath = NSIndexPath()

override func tableView(tableView: UITableView, willSelectRowAtIndexPath indexPath: NSIndexPath) -> NSIndexPath? {
        selectedIndexPath = indexPath
        return indexPath
    }

最後に、この値を PreparedForSegue 関数で使用できます

于 2016-02-26T15:25:13.163 に答える
1
  1. コントローラーのセグエを作成 -> コントローラー
  2. didselectrowatindexpath でデータの読み込みを実行する
  3. 完了したら->セグエを実行します
于 2012-11-05T15:51:51.470 に答える
0

ビュー コントローラをセットアップする方法は次のとおりです。

  1. Table View 1 を格納する View Controller が読み込まれると、Table View 1 のデータが読み込まれます。
  2. が呼び出されたら、tableView:didSelectRowAtIndexPath:を使用してセグエを発射しperformSegue:ます。
  3. Table View 2 を格納している View Controller がロードされたら、Table View 2 のデータをロードします。

Table View 2 のデータを時期尚早に読み込んでいる可能性があるようです。これが遅延が発生している理由です。メイン スレッドをデータの読み込みに結び付けているため、UI には、青色のハイライトを更新して表示する機能がありません。

メソッドでデータをviewDidLoadロードすると、ユーザーがテーブル ビュー セルを選択したときに負荷の高いロードを回避できます。tableView:didSelectRowAtIndexPath:ビュー コントローラに、メソッド内で詳細ビュー コントローラへのセグエを実行するように指示する必要があります。

于 2012-11-05T15:54:35.017 に答える