Метод в RootViewController не хранит массив - PullRequest
0 голосов
/ 14 июня 2010

У меня есть массив, инициализированный в моем RootViewController, и метод, который добавляет объекты в массив. Я создал объект RootViewController в моем SecondViewController. Метод запускается (выводит сообщение), но он ничего не добавляет к массиву, и массив кажется пустым. Код ниже, есть предложения?

RootViewController.h

#import "RootViewController.h"
#import "SecondViewController.h"

@implementation RootViewController
- (void)viewDidLoad {
    [super viewDidLoad];
    myArray2 = [[NSMutableArray alloc] init];

    NSLog(@"View was loaded");
}
-(void)addToArray2{
    NSLog(@"Array triggered from SecondViewController");
    [myArray2 addObject:@"Test"];
    [self showArray2];
}

-(void)showArray2{
    NSLog(@"Array Count: %d", [myArray2 count]);
}
-(IBAction)switchViews{
    SecondViewController *screen = [[SecondViewController alloc] initWithNibName:nil bundle:nil];
    screen.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
    [self presentModalViewController:screen animated:YES];
    [screen release];
}

SecondViewController.m

#import "SecondViewController.h"
#import "RootViewController.h"

@implementation SecondViewController

-(IBAction)addToArray{

    RootViewController *object = [[RootViewController alloc] init];
    [object addToArray2];

}
-(IBAction)switchBack{
    [self dismissModalViewControllerAnimated:YES];
}

EDIT *************

С кодом Мэтта я получил следующую ошибку:

"ожидаемый список спецификаторов-спецификаторов перед 'RootViewController'"

1 Ответ

0 голосов
/ 15 июня 2010

Вы упускаете некоторые очень важные основы здесь. Если вы выделяете новый RootViewController в вашем SecondViewController, это не тот экземпляр, который вы использовали для создания SecondViewController, поэтому у него не будет ссылки на массив, к которому вы добавляете объекты. То, что вы пытаетесь сделать, не сработает. Вы должны создать ivar в вашем SecondViewController для вашего RootViewController, а затем получить к нему доступ во втором представлении. Примерно так:

-(IBAction)switchViews{
    SecondViewController *screen = [[SecondViewController alloc] 
                                       initWithNibName:nil bundle:nil];
    screen.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
    [screen setRootViewController:self];
    [self presentModalViewController:screen animated:YES];
    [screen release];
}

Ваш ivar должен быть объявлен следующим образом в SecondViewController.h:

@property (nonatomic, retain) RootViewController *rootViewController;

А затем синтезируется в .m

Затем вы можете получить доступ к ivar из вашего SecondViewController:

-(IBAction)addToArray{
    [[self rootViewController] addToArray2];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...