将NSMutableArray传递给另一个视图控制器

问题描述:

我想在两个视图控制器之间传递一个NSMutableArray。请让我知道我可以为这个将NSMutableArray传递给另一个视图控制器

做在PlaylistViewController.h文件我有

NSMutableArray *SongArray; 
@property(nonatomic,retain)NSMutableArray *SongArray; 

我希望传递到另一个视图控制器

您可以通过两种方式分享:

  1. 使用属性

实施例

.H文件

@interface ABCController : UIViewController 
    { 
     NSMutableArray *detailArray; 
    } 
    @property(nonatomic,retain)NSMutableArray *detailArray; 

的.m文件

XYZController *xyzVC = [[XYZController alloc] initWithNibName:@"XYZController" bundle:nil];  
    xyzVC.detailArray = self.detailArray; 

    [self.navigationController pushViewCsecondView:xyzVC animated:YES]; 


    **XYZController.h** 

    @interface XYZController : UIViewController 
    { 
     NSMutableArray *detailArray; 
    } 

@property(nonatomic,retain)NSMutableArray *detailArray; 
  1. 使用NSUserDefaults
  2.  [[NSUserDefaults standardUserDefaults] setValue:SongArray forKey:@"songArray"]; 
        [[NSUserDefaults standardUserDefaults] synchronize]; 
    
        NSMutableArray *arr = [[NSUserDefaults standardUserDefaults] valueForKey:@"songArray"]; 
    
开始=>

**FirstViewController.h** 

@interface FirstViewController : UIViewController 
{ 
    NSMutableArray *SongArray; 
} 
@property(nonatomic,retain)NSMutableArray *SongArray; 

**FirstViewController.m** 

SecondViewController *secondView = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];  
secondView.SongArray = self.SongArray; 

[self.navigationController secondView animated:YES]; 


**SecondViewController.h** 

@interface SecondViewController : UIViewController 
{ 
    NSMutableArray *SongArray; 
} 
@property(nonatomic,retain)NSMutableArray *SongArray; 

让您NSMutableArray的财产和合成它。

而且这是在你的课程成为对象之后。

PlaylistViewController *PLVC = [[PlaylistViewController alloc] init]; 
PLVC.SongArray=yourAry; 
[self.navigationController pushViewController:PLVC animated:YES]; 

在secondViewController中创建一个NSMutableArray属性secondMutArray。 在firstViewController中,你想传递mutablearray,那里创建第二个viewcontroller的实例&将self.mutableArray赋值给secondMutArray。 这样

SecondViewController *secondViewController=[[SecondViewController alloc]init]; 
secondViewController.secondMutArray=self.mutableArray 

假设你想从其他视图控制器通过NSMutableArrayPlaylistViewController可以说viewcontroller .M那就不要考虑Controller.m或者以下

PlaylistViewController *play=[[PlaylistViewController alloc]initwithnibname:@"PlaylistViewController"]; 

play.SongArray=arrayofSongsWhichYouWantToPass; 

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

你可以设置你希望视图控制器传递数组作为原始视图控制器的代理(在您的情况下为PlaylistViewController)

**OriginViewController.h** 

@protocol OriginViewControllerDelegate { 
-(void)passMutableArray:(NSMutableArray*)array; 
} 

@interface OriginViewController : UIViewController 

@property(nonatomic,retain)id<OriginViewControllerDelegate> delegate; 
@property(nonatomic,retain)NSMutableArray *array; 

**OriginViewController.m** 

//set DestinationViewController as delegate to OriginViewController(not necessarily in OriginViewController.m 
//When you want to pass array just send message to delegate 
[self.delegate passMutableArray:array]; 

**DestinationViewController.h** 

@interface DestinationViewController : UIViewController <OriginViewControllerDelegate> 
//implement protocol function in your m file 

**DestinationViewController.m** 

-(void)passMutableArray:(NSMutableArray*)array { 
//Do whatever you want with the array 
}