DBcontrols というモデル クラスを作成し、それを複数のビューで使用しようとしています。(私はまだiOSで適切なMVCテクニックを学ぼうとしています。)しかし、2番目のビューであるTableVCはそれに行きません。私の問題は、ここではdBAppDelegate.mと呼ばれるアプリ Delegate にあると確信しています。
#import "dBAppDelegate.h"
// Controller Class
#import "DBcontrols.h"
// View Classes
#import "enterView.h"
#import "listTableVC.h"
@implementation dBAppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
UINavigationController *navigationController = (UINavigationController *)self.window.rootViewController;
enterView *firstViewController = (enterView *)[[navigationController viewControllers] objectAtIndex:0];
listTableVC *secondViewController = (listTableVC *)[[navigationController viewControllers] objectAtIndex:0];
DBcontrols *aDataController = [[DBcontrols alloc] init];
firstViewController.dataController = aDataController;
secondViewController.dataController = aDataController;
return YES;
}
enterView.hとlistTableVC.hの両方に次のコードがあります。
#import <UIKit/UIKit.h>
@class Contacts;
@class DBcontrols;
either: @interface enterView: UIViewController
or: @interface listTableVC: UITableViewController
@property (strong, nonatomic) DBcontrols *dataController;
. . .
@end
そのdataControllerは、 enterView.mとlistTableVC.mの両方で合成されます。
ストーリーボードは次のとおりです。
Contacts TableVC であるlistTableVCは、 enterViewナビゲーション バーの [リスト] ボタンのプッシュオフとしてセグエします。
すべてが正常にコンパイルされますが、 DBcontrols メソッドは enterView で呼び出されますが、listTableVCでは呼び出されません。たとえば、enterViewとlistTableVCの両方でcountContactsメソッドを使用します。
- (NSUInteger)countContacts {
nC = 0;
const char *dbpath = [_databasePath UTF8String];
if (sqlite3_open(dbpath, &_contactDB) == SQLITE_OK) {
NSString *querySQL = [NSString stringWithFormat: @"SELECT * FROM contacts"];
const char *query_stmt = [querySQL UTF8String];
if (sqlite3_prepare_v2(_contactDB, query_stmt, -1, &statement, NULL) == SQLITE_OK) {
while (sqlite3_step(statement) == SQLITE_ROW) {
nC++;
}
}
}
NSLog(@"%d contacts in dB.", nC );
return [self.masterContactList count];
}
これがlistTableVCから呼び出されると、応答しません。私は何を間違っていますか?
ありがとうございました!