在两个UIViewController之间传递NSMutableArray

时间:2010-04-14 06:09:06

标签: iphone uiviewcontroller nsmutablearray

我有两个视图控制器名称RootViewController和SecondViewController。在FirstViewController中,我有这个NSMutableArray

@interface RootViewController : UITableViewController {

NSMutableArray *allClasses;}@property (nonatomic,retain) NSMutableArray *allClasses;

在RootViewController中,我使用allClasses中的所有对象填充UITableView

在我的SecondViewController中我有

@interface SecondViewController : UIViewController <UITextFieldDelegate,UIPickerViewDelegate> {

NSMutableArray *arrayStrings;}

我有一个方法可以将新的NSStrings添加到arrayStrings。我的目标是通过尝试类似于allClasses = arrayStrings的东西将arrayStrings传递给RootViewController。这样,当加载RootViewController时,它可以填充新信息。

我将如何完成这项任务?

2 个答案:

答案 0 :(得分:0)

在RootViewController工具中

-(void)viewWillAppear:(BOOL)animated

这种委托方法。在这个方法里面

self.allClasses = SecondViewControllerObj.arrayStrings;

SecondViewControllerObj是在RootViewController中作为成员声明的SecondViewController的对象,用于导航到该视图

喜欢

if(SecondViewControllerObj == nil)
    {
        SecondViewControllerObj = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];
    }

        [self.navigationController pushViewController:SecondViewControllerObj animated:YES];

答案 1 :(得分:0)

您需要在第二个视图控制器中具有根视图控制器的引用。在那里你需要将allclasses设置为arrayStrings; 通常,您可以通过以下代码找到对推入堆栈的任何视图控制器的引用。

NSArray *viewConts = [[self navigationController] viewControllers];
        for(int i=0;i<[viewConts count];i++)
        {
            if([[viewConts objectAtIndex:i] isKindOfClass:[RootViewController class]]){
                RootViewController *rootController = (RootViewController *)[viewConts objectAtIndex:i];
                [rootController setAllClasses:arrayStrings];

            }

        }

现在在RootViewController的viewWillAppear中,您需要重新加载视图的内容。

希望这有帮助。

谢谢,

Madhup