この質問はstackoverflowの他の場所であることは知っていますが、これらの解決策はどれもうまくいきませんでした。同じデータソースを使用したいテーブル ビューを持つ 2 つのタブがあります。最初のタブのビュー コントローラは のサブクラスですUITableViewController
。UIViewController
2 つ目は、 IB で tableView をセットアップしたシンプルなものです。最初に、データ ソースを引数として受け取るようにビュー コントローラー イニシャライザーをセットアップしましたが、それが非常にクラッシュしたため、単純にビュー コントローラーに割り当てることで物事を簡素化しようとしました。テーブル ビューとデータソースを次のように設定しました。
@property (weak, nonatomic) IBOutlet UITableView *tableView; //Connected in IB
@property (strong, nonatomic) TableViewDataSource *data;
私のプログラムはいつでもクラッシュします:メソッド[self.tableView setDataSource: data];
にその行を入れようとしましたviewDidLoad
が、私のプログラムはまだクラッシュします。これが私のviewDidLoad
方法です:
- (void)viewDidLoad
{
[super viewDidLoad];
data = [TableViewDataSource new]; //My data source object
NSLog(@"%@", data); //This isn't null, it says TableViewDataSource and then some address
[self.tableView setDataSource:data];
}
私の最初のView Controllerは正常に動作します。データも正常にロードされるので、データソース オブジェクトに間違いはないと思います。しかし、2 番目のタブをクリックするたびに、プログラムがすぐにクラッシュします。ただし、データ ソースの割り当てステートメントを省略してもクラッシュしません。
クラッシュは次のとおりです。
2013-08-14 12:56:57.313 iPlanner[961:c07] *** Assertion failure in -[UITableView _configureCellForDisplay:forIndexPath:], /SourceCache/UIKit_Sim/UIKit-2380.17/UITableView.m:5471
2013-08-14 12:56:57.314 iPlanner[961:c07] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'UITableView dataSource must return a cell from tableView:cellForRowAtIndexPath:'
*** First throw call stack:
(0x1ca2012 0x10dfe7e 0x1ca1e78 0xb75665 0xd9c1b 0x6e40c 0xd9a7b 0xde919 0xde9cf 0xc71bb 0xd7b4b 0x742dd 0x10f36b0 0x229efc0 0x229333c 0x2293150 0x22110bc 0x2212227 0x22b4b50 0x39edf 0x1c6aafe 0x1c6aa3d 0x1c487c2 0x1c47f44 0x1c47e1b 0x1bfc7e3 0x1bfc668 0x23ffc 0x298d 0x28b5)
libc++abi.dylib: terminate called throwing an exception
(lldb)