私はアプリを作っています(私の最初の、うわー!)、私はちょうどときに修正することができない、テーブルビューを読み込むエラーを取得しています。奇妙なUITableViewのエラー
私は最初のViewControllerがうまく動作します。私は、ナビゲーションコントローラがUITableViewを指し示しているボタンを持っています。私のUITableViewサブクラスのtableView:numberOfRowsInSectionオーバーライドに問題があるようです。私はアプリケーションデリゲートに「signalSIGABRT」エラーを取得するテーブルビューのシーンをロードすると
override func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 2
}
:
はここで表を設定するコードです。
エラーはnumberOfRowsInSectionメソッドにあるように見えます。なぜなら、コメントアウトするとエラーは表示されず、空のテーブルが取得されるだけです。
デバッグでは、そのメソッドの "return 2"行にブレークポイントを設定し、クラッシュすることなくブレークポイントで停止します。私は本当にそこから進んでいない:これらのような行を完全に、私は「ステップオーバー」ヒット、それは私は間違いなく理解することは、このすべてにあまりにも新たなんだ画面に私をもたらします:
UIKit`-[UITableView _numberOfRowsInSection:]:
0x10641a23e <+0>: pushq %rbp
0x10641a23f <+1>: movq %rsp, %rbp
0x10641a242 <+4>: pushq %r15
0x10641a244 <+6>: pushq %r14
0x10641a246 <+8>: pushq %r12
0x10641a248 <+10>: pushq %rbx
0x10641a249 <+11>: movq %rdx, %r14
0x10641a24c <+14>: movq %rdi, %r15
0x10641a24f <+17>: movq 0x101d2e2(%rip), %rdi ; UITableView._dataSource
0x10641a256 <+24>: addq %r15, %rdi
0x10641a259 <+27>: callq 0x106eca892 ; symbol stub for: objc_loadWeakRetained
0x10641a25e <+32>: movq %rax, %r12
0x10641a261 <+35>: movq 0xfe3300(%rip), %rsi ; "tableView:numberOfRowsInSection:"
0x10641a268 <+42>: movq %r12, %rdi
0x10641a26b <+45>: movq %r15, %rdx
0x10641a26e <+48>: movq %r14, %rcx
0x10641a271 <+51>: callq *0xd0afe1(%rip) ; (void *)0x00000001044f7ac0: objc_msgSend
-> 0x10641a277 <+57>: movq %rax, %rbx
0x10641a27a <+60>: movq %r12, %rdi
0x10641a27d <+63>: callq *0xd0afdd(%rip) ; (void *)0x00000001044f4d20: objc_release
0x10641a283 <+69>: xorl %eax, %eax
0x10641a285 <+71>: testq %rbx, %rbx
0x10641a288 <+74>: cmovsq %rax, %rbx
0x10641a28c <+78>: movq %rbx, %rax
0x10641a28f <+81>: popq %rbx
0x10641a290 <+82>: popq %r12
0x10641a292 <+84>: popq %r14
0x10641a294 <+86>: popq %r15
0x10641a296 <+88>: popq %rbp
0x10641a297 <+89>: retq
そして、私は "Continue"を押すと実際には進まないが、これは奇妙に思える。
とにかく、誰かが助けてくれるといいと思っています。
光を当ててもしなくてもよい背景情報があります: XCode8からSwift 3にアップデートする前に、このアプリのほとんどを書いていました。これにはどのような影響があったのかは分かりません。私はSwift 3以前でこの問題を引き起こしているアプリのこの部分を書きました。 私はKevin McNeischの「非プログラマー向けのiOSアプリケーション開発」ブックシリーズからコードを学びました。以前はこのアプリケーションの主なビジネスコントローラーをmmBusinessObjectのサブクラスとして使用していました。しかしSwift 3はmmBusinessObjectを破ったので、それらをNSManagedObjectsに変更しました。つまり、私はこれまでどんなエンティティテーブルにもアクセスしていませんでした。この問題はアプリのそれらの部分とは関係ないように見えますが、とにかく情報を含めると考えました。
ありがとうございます! ジョナサン
EDIT: どうやら私はコメントに返信する方法を理解できないようですね。 (私は「コメントを追加」を押すと、ページの上部に移動しますが、ページ上で何も変わっていません)
ありがとうございます。 cellForRowAtIndexPathについて
:対応して numberOfSectionsでは、とnumberOfRowsInSection、およびcellForRowAtIndexPath、私はコメントアウトcellForRowAtIndexPath(およびアクティブな他の2つが)、私はエラーを取得して、エラー を取得します。 numberOfRowsInSectionがコメントアウトされていて(他の2つがアクティブになっています)、空のテーブルが表示されます。
デリゲート/データソースについて: ここで私のViewControllerはUITableViewControllerのサブクラスです。データソースまたはデリゲートプロトコル用に設定しようとすると、冗長となります。ストーリーボードビューでは、テーブルビューのデリゲートとデータソースは両方ともテーブルビューの名前である「ブラウズソング」に設定されています。シーンの上部にある黄色のアイコンを選択すると、データソースとデリゲートが両方とも「テーブルビュー」として表示されます。これらは自動的に発生しました(つまり私はそれを自分でやったことはありませんでした、ただそこにいました)、私はそれが何であると思いますか?
ViewControllerについて:私はこの問題を現在のものと考えていますか?以下にコードを示します。これは、ナビゲーションコントローラから作成されたテーブルビューにリンクされていることに注意してください。また、(オブジェクトライブラリから)単にテーブルビューとして作成すると、セクション/行メソッドは正常に機能しますが、レイアウトの問題が発生し、ナビゲーションが必要になります。
import UIKit
class SongListViewController2: UITableViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
override func numberOfSections(in tableView: UITableView) -> Int {
return 2
}
// override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// return 2
// }
// Error seems to be caused by numberOfRowsInSection method
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "reuseIdentifier", for: indexPath)
// Configure the cell...
cell.textLabel?.text = "Hello world"
return cell
}
呼び出されますcellForRowAtIndexPathていますか? – danh
コントローラの表示に関する詳細をお知らせください。いくつかのコードですか? –
デリゲートとデータソースを接続しましたか? – nighttalker