0

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.hlistTableVC.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.mlistTableVC.mの両方で合成されます。

ストーリーボードは次のとおりです。

ここに画像の説明を入力

Contacts TableVC であるlistTableVCは、 enterViewナビゲーション バーの [リスト] ボタンのプッシュオフとしてセグエします。

すべてが正常にコンパイルされますが、 DBcontrols メソッドは enterView で呼び出されますが、listTableVCでは呼び出されませ。たとえば、enterViewlistTableVCの両方で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から呼び出されると、応答しません。私は何を間違っていますか?
ありがとうございました!

4

2 に答える 2

0
listTableVC *secondViewController = (listTableVC *)[[navigationController viewControllers] objectAtIndex:0];

たぶんあるはずです:

listTableVC *secondViewController = (listTableVC *)[[navigationController viewControllers] objectAtIndex:1];

?

于 2013-07-11T20:24:24.903 に答える