問題タブ [nsindexpath]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
923 参照

multithreading - NSIndexPath はスレッドセーフですか?

Apple のマルチスレッド ドキュメントNSIndexPathには、スレッドセーフかどうかが記載されていません。不変クラスとして、私は一般的にそれがスレッドセーフであることを期待しています。

NSIndexPath以前は、インスタンスが共有され、グローバルに一意であると述べていたドキュメントが使用されていたと確信しています。しかし、それは今では消えているようで、iOS5 / Mac OS X 10.7 でデザインが変更されたのではないかと疑っています。

Mac OS X 10.6 (Snow Leopard) を使用しているお客様から、インデックス パスにアクセスしようとしてクラッシュしているように見えるクラッシュ レポートが多数寄せられています。したがって、私は疑問に思います: 実際のインスタンスはスレッドセーフですが、共有キャッシュからそれらを引き出すためのロジックはそうではありませんか? 誰か洞察力がありますか?

ところで、スタック トレースの例を次に示します。

私にとって、それは、NSIndexPath自分自身を割り当て解除されたインスタンスと比較しようとしているインスタンスです。

0 投票する
1 に答える
8039 参照

objective-c - selectRowAtIndexPath: アニメーション化: scrollPosition: - 行は「選択」されています

次のコードを使用して、tableView の上部にスクロールしています。

うまく機能しますが、ターゲット行が「選択」されないようにしたいと思います。下の画像を参照してください。

ここに画像の説明を入力

このコードの実行後に行を「選択解除」する方法についてのアイデアはありますか? それとも、そもそもターゲット行を「選択」しない方法でこのコードを実行しますか?

0 投票する
2 に答える
1039 参照

iphone - UITableViews間でNSIndexPathを渡します

UITableViewplistファイルからの表示データがあります。このテーブルビューでNSArrayは、plistファイルの内容からを作成し、データを各セルにフィードしました。ただし、セルがタップされると、次のテーブルビューコントローラーがタップされたセルのインデックスパスを認識し、このビューコントローラーが配列内の詳細を表示するアイテムを認識できるようにする必要があります。私は次の方法を試しました:

上記では、タップしたセルのインデックスパスをNSIndexPath、新しいViewControllerで作成したオブジェクトに渡そうとしています。

次のテーブルビューコントローラのヘッダーファイル:

ここでselectedIndexPathは、前のViewControllerで設定されたオブジェクトを定義します。

しかしselectedIndexPath、関連データを表示するためにオブジェクトにアクセスしようとすると、オブジェクトは次のように見えますnil

selectedIndexPathオブジェクトに正しくアクセスしていませんか?正しいインデックスパスを次のViewControllerに渡すための優れた方法はありますか?

0 投票する
1 に答える
2662 参照

iphone - 別のクラスを使用してセルを削除するときの NSInvalidArgumentException

コードの更新: Matthew の回答に続いて、コードをより正確に修正しようとしました。コードはセルを削除しますが、クラッシュしてエラーが発生します。

* キャッチされていない例外 'NSInvalidArgumentException' が原因でアプリを終了しています。理由: '* -[__NSPlaceholderArray initWithObjects:count:]: オブジェクト [0] から nil オブジェクトを挿入しようとしています'

checkboxTapped以下のコードは、私のコードで呼び出されたアクションからのものCustomCellです。アクションが起動されると、エラーが発生します。myindexPathが に等しいことがわかりましたNULL。これが問題である可能性が最も高いです。しかし、私はそれを修正する方法がわかりません。

Old:コードを調べて、使用していた配列を印刷しました。問題ないように見えますが、このエラーは引き続き発生します。

* キャッチされない例外 'NSRangeException' が原因でアプリを終了します。理由: '* -[__NSArrayM removeObjectAtIndex:]: 境界を超えたインデックス 1 [0 .. 0]'

私の推測では、それは私と関係があると思われましたが、私indexPathがどれだけ変更してもそれほど違いはありません.

0 投票する
2 に答える
1672 参照

ios - UITableViewの特定のセクションのみを編集可能にする

複数のセクションを持つUITableViewがあり、1つのセクションのみを編集可能にしたい(スワイプして削除)。

デリゲートメソッドで何かしなければならない気がしますがwillBeginEditingRowAtIndexPath、理解できないようです。

0 投票する
4 に答える
7367 参照

objective-c - NSIndexPath をインクリメントする方法

インデックス パスを使用したいデータ状況があります。データをトラバースしているときに、NSIndexPath の最後のノードをインクリメントしたいと考えています。私がこれまでに持っているコードは次のとおりです。

これは少し不格好に感じます - もっと良い方法はありますか?

0 投票する
1 に答える
2639 参照

ios - UITableView selectRowAtIndexPath のアサーション エラー

これは特別な注意が必要な問題だと思います... 私の Google-fu はかなり良いのですが、役に立つものは何も得られませんでした。

これは最も単純なことですが、何が問題なのかわかりません。

私はUITableViewを持っています。私の VC が _form を呼び出すサブビューです。実際にデータを表示するためではなく、スタイリングの目的で使用しています。2セルあります。

特定のイベントで、selectRowAtIndexPath:animated:scrollPosition を使用して別のセルを選択しようとしています。

私がこれを行うと、SIGABRTS.

簡単な例:

ボタンのタイトルが変更され、選択された行が 0 または 1 であることが表に出力されますが、目的のセルを選択しようとすると、次のように壊れます。

これは、テーブルの構成方法に問題があることを意味していると思いますが、何が原因かはわかりません。tableView:didSelectRowAtIndexPath. これを除いて、他のすべては私がこのように設定した方法で問題なく動作します。

(また、「(gdb)」だけでなく、追加のデバッグ情報で返信している他の人もいます。どうすればこれを入手できますか?)

ありがとう!

0 投票する
2 に答える
931 参照

memory-leaks - UITableView - moveRowAtIndexPath によりメモリ リークが発生する

概要

  • iOS プロジェクトでUITableViewは、UITableView の行を移動しようとしています。
  • 私のモデルでは、データの順序が変更されているため、テーブルで視覚的に表示しようとしています。そのため、UITableViewの方法を使用しましたmoveRowAtIndexPath:toIndexPath:
  • そのためにNSIndexPath、UITableView のメソッドに渡すインスタンスを作成しました。

漏れが発生したとき

  • メソッドを使用して NSIndexPath インスタンスを作成しindexPathForRow: section:(コード セクションを参照)、それをUITableViewのメソッドmoveRowAtIndexPath: toIndexPath:に渡すと、リークが発生します。

ノート:

  • ARC(自動参照カウント)を使用しています
  • X コード 4.3.1
  • Instruments (Xcode メニュー - Product > Profile) を使用して、メモリ リークを特定しました。

コード: (UITableViewController 内)

私が試した手順

  • メソッドの呼び出しをコメント アウトするとmoveRowAtIndexPath:originalIndexPath toIndexPath:、メモリ リークが防止されます
  • 私は手動で使用CFReleaseしました(これが自動参照カウント環境での良い習慣であるかどうかはわかりません)

    CFRelease((__bridge void *)toIndexPath);

質問:

  • なぜこれが起こるのですか?それに対する解決策はありますか?
  • 計測器のメモリ リークの結果は正確ですか?
  • UITableView のメソッドにバグはありますmoveRowAtIndexPath:originalIndexPath toIndexPath:か?
  • CFRelease はオプションですか? CFRelease が既に解放されているメモリを解放しようとした場合にアプリがクラッシュするのを防ぐ安全な方法はありますか (上記の正確なコードを参照)。
0 投票する
2 に答える
1994 参照

uitableview - 完了したナビゲーションコントローラーアニメーションの確認

ビューコントローラーをアニメーション付きのナビゲーションコントローラーにプッシュする場合は、アニメーションが完了するまで待ってから別のビューコントローラーをプッシュする必要があることがわかりました。そうしないと、警告が表示され、予期しない結果が生じる可能性があります。

この問題を回避するために、navコントローラーのアニメーションが完了したかどうかをどのように確認しますか?

ありがとう

0 投票する
1 に答える
194 参照

objective-c - UITableViewController から UITableView の 0 番目のセクションに到達できません

ユーザーが情報(質問と選択肢)を入力するテーブルビューフォームがあります。基本的に、ユーザーが最後のセクションをクリックすると、テキストフィールドやその他の要素が収集されます。

関数ではdidSelectRowAtIndexPath、これらのテキスト フィールドにアクセスして値を取得しようとしています。

コンソールに次の出力が表示されます。

つまり、セクション 0 のテキスト フィールドにアクセスできません。2 行目を追加しようとしたところ、null も返されました。質問セルと選択肢セルのセクションを入れ替えてみたところ、選択肢に対応するセクション 0 に対して null が返されました。質問セルはうまくいきました。また、セクション番号を増やしてみたので、質問セルはセクション 1、選択肢はセクション 2 などでした...その後、セクション 1 に対して null が返されました。何が起こっているのか理解できませんでした。これは本当に奇妙な問題です。

ちなみに、がセクション 0 の行のインデックス パスと等しいdidSelectRowAtIndexPath場合、セルにアクセスできます。indexPath[NSIndexPath indexPathForRow:0 inSection:0]

たとえば、didSelectRowAtIndexPath次のようになります。

セクション 0 の質問入力に「fooBar」と書き込み、セクション 4 のセル ([質問] ボタン) をクリックすると、次の出力が得られます。

質問入力のあるセルであるセクション 0 のセルをクリックすると、次のようになります。

前もって感謝します...