0

我正在使用 SplitViewController 制作一个小型 iPad APP,我主要在 DetailViewController 上使用 MasterViewController。我正在尝试将一些数据从 DetailViewController 推送到 MasterViewController。将信息推送到 MasterViewController 后,我想使用它,因此我使用 pop 方法来执行此操作。

push 方法填充数组 - 但由于某种原因,每次调用该pushModuleTitle方法时都会重新创建我的数组,并且一次只保存一个对象。

在里面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 方法: - 但这总是返回一个空值,当我放置一个断点时,它表明我的 moduleTitleStack 有 0 个对象。我不确定为什么。

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

调用 popModuleTitle 方法:给出一个空值

- (IBAction)testButtonPressed:(id)sender {

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

}
4

2 回答 2

0

原因与您刚刚提出的另一个问题的答案相同。每次单击按钮时,您都会创建一个新的 cw3MasterViewController 实例。您应该像这样获得对主控制器的引用:

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

这假设 master 是拆分视图控制器索引 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 回答