0

SplitViewController を使用して小さな iPad APP を作成しており、主に DetailViewController で MasterViewController を使用しています。DetailViewController から MasterViewController にデータをプッシュしようとしています。情報がMasterViewControllerにプッシュされたら、それを利用したいので、popメソッドを使用してこれを行います。

push メソッドは配列に値を設定しますが、何らかの理由でpushModuleTitleメソッドを呼び出すたびに配列が再作成され、一度に 1 つのオブジェクトしか保持されません。

の中にDetailViewController.m

- (IBAction)buttonAddPressed:(id)sender
{
    cw3MasterViewController *master = [[cw3MasterViewController alloc]init];
    [moduleTitles addObject:textFieldModuleTitle.text];
    [master pushModuleTitle:self.textFieldModuleTitle.text];);
}

の中にMasterViewController.m

 - (NSMutableArray *)moduleTitleStack//init array
    {
        if (!_moduleTitleStack){
            _moduleTitleStack = [[NSMutableArray alloc] init];
        }
        return _moduleTitleStack;
    }

    -(void)pushModuleTitle:(NSString*)moduleTitile
    {
        NSString * moduleTitileObject = moduleTitile;
        [self.moduleTitleStack addObject:moduleTitileObject];
        NSLog(@"%@",self.moduleTitleStack);

    }

プッシュされた情報を使用するために、この pop メソッドを使用しています。理由はわかりません。

-(NSString *)popModuleTitle
{
    NSString * moduleTitileObject = [self.moduleTitleStack lastObject];
    if (moduleTitileObject)[self.moduleTitleStack removeLastObject];
    return moduleTitileObject;
}

popModuleTitle メソッドの呼び出し: null 値を与える

- (IBAction)testButtonPressed:(id)sender {

    NSLog(@"%@", [self popModuleTitle]);

}
4

2 に答える 2

0

理由は、あなたが今尋ねた他の質問への回答と同じです。ボタンをクリックするたびに cw3MasterViewController の新しいインスタンスを作成しています。次のように、マスター コントローラーへの参照を取得する必要があります。

cw3MasterViewController *master = self.splitViewController.viewControllers[0];

これは、マスターが分割ビュー コントローラーのインデックス 0 にある唯一のコントローラーであると想定しています。ナビゲーション コントローラーに埋め込まれている場合 (よくあることです)、マスターに到達するにはもう少し先に進む必要があります。

cw3MasterViewController *master = (cw3MasterViewController *)[(UINavigationController *) self.splitViewController.viewControllers[0] topViewController];
于 2013-05-14T20:33:11.613 に答える
0

えれ:

w3MasterViewController *master = (cw3MasterViewController *)[(UINavigationController *) self.splitViewController.viewControllers[0] topViewController];

セマンティックな問題があります: サブスクリプトにはインターフェイス 'NSArray' のサイズが必要です。これは脆弱でない ABI では一定ではありません

代わりに委任を使用してください。

于 2013-10-28T01:36:50.150 に答える