所以我在详细视图控制器中创建了我的NSMutablearray,分配了数据等,但我只是想知道如何在主视图控制器中访问它?这是我第一次使用表格视图等,所以我对它很无能为力。
由于
答案 0 :(得分:1)
您需要使用指定的初始化程序将NSMutableArray传递给Viewcontroller。
在ViewController .m中创建指定的initiliazer,在.h。
中创建delcare- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil WithArr:(NSMutableArray*)arr
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self)
{
self.arrTaskList=arr;
}
return self;
}
在创建viewcontroller对象时与DetailViewController类似
ViewController* vc=[ViewController alloc]initWithNibName:@"ViewController" bundle:@"" Arrr:self.arr];
答案 1 :(得分:1)
通常模式相反,您可以在主视图控制器中创建对象,并将指向此VC的特定项目的指针传递给详细信息VC。然而,这只是最常见的模式,如果您认为合适,您所做的就是正确的。
通常,Detail VC通过委托将数据返回给Master VC。这里有数以百计的关于如何做的教程和问题,我会复制粘贴教程。但简而言之,步骤是:
id<yourProtocol>
的实例变量,指向代理这听起来很复杂,而且确实有一点点,但是一旦你掌握了这个概念,你会发现它几乎适用于你的所有项目。
另一种可能性是使用通知让Master VC知道Detail VC中的内容发生了变化。
答案 2 :(得分:0)
有一些方法可以做到这一点。
其中一个是:
您将NSMutableArray
设置为视图控制器上的属性。然后,在详细视图控制器上为视图控制器本身设置属性。
ViewController界面
@property (nonatomic, strong) NSMutableArray *mutableArray;
DetailViewController界面
@property (nonatomic, strong) ViewController *viewController;
然后,在ViewController上,在推送DetailViewController之前,将其viewController
属性设置为self
detailViewController.viewController = self;
然后,在DetailViewController上,将viewController.mutableArray
属性设置为刚刚创建的新数组。
您可以使用viewWillDisappear
方法执行此操作。
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
self.viewController.mutableArray = _myNewlyCreatedMutableArray;
}
因此,当您返回ViewController时,只需访问self.mutableArray
,您就可以获得在详细信息视图中创建的数组。