我尝试了几种我在这里找到的方法,但没有一种方法可行。将NSMutalbeArray传递给另一个View控制器的简单方法是什么?
NSMutableArray *pph = [[NSMutableArray alloc] init];
[pph addObject:[NSString stringWithFormat:@"%d %d %d",diario.Cowid,diario.Lact,diario.Del]];
在我下面的同一个文件上
- (IBAction)masInfoPPH;
{
tipo = @"PPH";
adiario = pph;
NSLog(@"\n Array adiario: %@",pph);
DetDiarioViewController *DetDiarios = [[DetDiarioViewController alloc] initWithNibName:nil bundle:nil];
[self.navigationController pushViewController:DetDiarios animated:YES];
}
由于某种原因,pph(NSMutalbeArray)在这里变为null但在那里它确实给了我应该拥有的对象。 adiario是一个全局数组或至少它应该是。救命啊!
答案 0 :(得分:1)
确实没有全局数组。在类的接口中为pph创建一个属性。
@property(nonatomic, strong) NSMutableArray *pph;
self.pph = [[NSMutableArray alloc] init];
[self.pph addObject:[NSString stringWithFormat:@"%d %d %d",diario.Cowid,diario.Lact,diario.Del]]
但是你仍然需要将它带入下一个视图控制器。在它的界面中创建一个类似的属性,然后在推送之前设置它
DetDiarioViewController *detDiarios = [[DetDiarioViewController alloc] initWithNibName:nil bundle:nil];
detDiarios.pph = self.pph;
[self.navigationController pushViewController:detDiarios animated:YES];
BTW - 在objective-c中,惯例是对实例的第一个字母使用小写字母
答案 1 :(得分:0)
您的pph
数组的范围在您的描述中不明确。但是在单个方法中声明的任何内容都是该方法的LOCAL,除非返回 BY该方法。
您有几个选项...将数组声明为实例变量,即..
@interface YourClass: NSObject { NSMutableArray *pph; }
或
@implementation YourClass { NSMutableArray *pph; }
或static
变量(在.m
文件中)(这样您就可以访问Class
(+
)方法中的值..
static NSMutableArray *pph = nil;
或最优选......作为财产
@interface YourClass @property (strong) NSMutableArray *pph;
然后您可以通过自动合成的Ivar _pph
或通过属性的访问者self.pph
从任何实例方法调用。
希望这有帮助!