0

好吧,我有NSMutableArray一个视图,我想将此数组的值传递给另一个视图。但我不想使用该方法[self presentModel view controller ...],因为我只想在按下我创建的另一个按钮时显示另一个视图。问题是,当我按下按钮显示数组的值时,数组会丢失它的值,返回空,但如果我使用该方法[self presentModel view controller ...],它会正确返回值。

目前看来:

@property and @synthesise AnotherViewController *superAnother


AnotherViewController *anView = [[AnotherViewController alloc]initWithNibName:nil bundle:nil];
superAnother.arrayOfTheAnotherView = [[NSMutableArray alloc]initWithArray:arrayOfTheCurrentView];

另一种观点:

@property and @synthesise NMutableArray *arrayOfTheAnotherView;

NSMultableArray array = [[NSMultableArray alloc]initWithArray:arrayOfTheAnotherView];

使用数组加载表视图:

cell.textLabel.text = [array objectAtIndex:indexPath.row];
4

3 回答 3

0

arrayWithArray不会创建所收集对象的其他实例,而是使用相同的引用创建另一个数组实例。如果您想更改弹出框或其他任何时候的数据源对象,您需要使用arrayWithArray:copyItems:复制项目,当然所有包含的对象都必须符合NSCopying协议才能复制它们。

于 2012-08-24T16:17:30.453 回答
0

这段代码有一些问题:

你定义了你的superAnother财产,但你没有为它分配任何东西。你的代码应该是这样的:

self.superAnother = [[AnotherViewController alloc] initWithNibName:nil bundle:nil];
self.superAnother.arrayOfTheAnotherView = [[NSMutableArray alloc] initWithArray:arrayOfTheCurrentView];

然后在你的AnotherViewController.m

cell.textLabel.text = [self.arrayOfTheAnotherView objectAtIndex:indexPath.row];

PS。当然,如果您不使用 ARC,请不要忘记释放它们

于 2012-08-25T17:19:24.453 回答
0

在视图控制器之间传递 NSMutableArray 的另一种方式是这样的:

  • 在界面生成器中,将 IBAction 添加到第一个视图控制器中的按钮
  • 在两个视图控制器之间添加故事板转场(不是从一个按钮到下一个视图控制器,而是直接在视图控制器之间
  • 给这个 segue 一个唯一的标识符
  • 在第一个视图控制器中按钮的 IBAction 中添加该行

    [self performSegueWithIdentifier:@"myIdentifier"];

  • 然后在第一个视图控制器中,您可以实现委托方法:

    - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    
    
        if ([[segue identifier] isEqualToString:@"myIdentifier"]) {
    
            SecondViewController *con = [segue destinationViewController];
            con.array = self.array;
        }
    }
    
于 2012-08-24T17:08:59.543 回答