我的按钮点击事件在AssetScreenPopupViewController
AssetScreenPopupViewController
中显示NSNumber
我动态地将NSMutableArray(emailClkArray)
添加到emailClkArray
。
当我解除viewcontroller时,我正在浏览我的BrowseProgrammingTools中的- (void)imageViewTapped:(UITapGestureRecognizer *)gr {
AssetScreenPopupViewController * assetController =
[[AssetScreenPopupViewController alloc]init];
assetController.AssetContentArray = tableData_one;
assetController.myStringValue = gridPopUpController.assetName.text;
[self.navigationController presentViewController:assetController animated:NO
completion:nil];
NSLog(@"Asset ARRAY %@",assetController.emailClkArray);
[self.navigationController.delegate self];
}
。但我总是得到空白数组。
我提供modalviewcontroller的代码是
- (IBAction)emailClkBtn:(id)sender {
[self.emailClkArray replaceObjectAtIndex:k withObject:[NSNumber numberWithInt:1]];
[self.emailBtnOutlet setBackgroundImage:newImage1 forState:UIControlStateNormal];
NSLog(@"WMA dhbc%@",self.emailClkArray);
}
我向数组添加值的ModalViewController类方法如下
ParentViewController
当我解雇视图控制器时,我已将emailClkArray指定为
- (IBAction)dismissClk:(id)sender {
BrowseProgrammingTools *browsePrgTools = [[BrowseProgrammingTools alloc]init];
browsePrgTools.emailClkArray = self.emailClkArray;
[self dismissViewControllerAnimated:NO completion:Nil];
}
像这样的MutableArray
viewDidAppear
当我使用BrowseProgrammingTools
这样的-(void)viewDidAppear:(BOOL)animated{
[super viewDidAppear:YES];
self.emailClkArray = [[NSMutableArray alloc]init];
NSLog(@"DNW%@",self.emailClkArray);
}
方法打印此数组时
DNW(
)
我正在获得像这样的空白数组
{{1}}
请帮助我如何获得价值?
答案 0 :(得分:1)
你误解了控制的流程。
当您拨打presentViewController:animated:completion:
时,呼叫会立即返回。在视图控制器甚至显示在屏幕之前执行之后的下一行。
您应该将AssetScreenPopupViewController设置为具有委托属性。定义一个AssetScreenPopupViewController将用于与视图控制器通信的协议,该控制器在用户完成选择时调用它。
答案 1 :(得分:1)
你的问题在这里:
- (IBAction)dismissClk:(id)sender {
BrowseProgrammingTools *browsePrgTools = [[BrowseProgrammingTools alloc]init];
browsePrgTools.emailClkArray = self.emailClkArray;
[self dismissViewControllerAnimated:NO completion:Nil];
}
你正在实例化一个新的视图控制器,传递一个数组,然后......好吧,然后什么都没有。当您关闭拥有它的VC时,该视图控制器会消失 - 您将在下一行代码中执行此操作。行BrowseProgrammingTools *browsePrgTools = [[BrowseProgrammingTools alloc]init];
不会抓取呈现的VC,它会创建一个新的实例。
您可能希望在显示的VC中创建一些委托方法(查找@protocol),然后在设置导航控制器的委托后立即设置委托。然后,不要调用[self dismissViewControllerAnimated:NO completion:Nil];
,以委托实现的任何方法调用它。