Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone VIEWWILLEXPEND未在iOS中调用_Iphone_Ios_Xcode - Fatal编程技术网

Iphone VIEWWILLEXPEND未在iOS中调用

Iphone VIEWWILLEXPEND未在iOS中调用,iphone,ios,xcode,Iphone,Ios,Xcode,我创建了三个名为A、B和C的视图控制器C视图控制器是B视图控制器的子视图,执行a时,视图被推送到BC的视图控制器委托方法视图将出现未调用。问题在于IOS版本。 将另一个视图控制器的视图(viewControllerC.view)作为子视图添加到现有视图控制器(viewControllerB)时,视图将出现:()和视图显示:()的viewControllerC在ios 5.0早期版本中不会触发。如果需要调用,则通过检查设备ios版本手动调用此方法 您可以检查ios版本并手动调用委托方法,如下所示

我创建了三个名为
A
B
C
的视图控制器
C
视图控制器是
B
视图控制器的子视图,执行
a
时,视图被推送到
B
C
的视图控制器委托方法
视图将出现
未调用。

问题在于IOS版本。

将另一个视图控制器的视图(viewControllerC.view)作为子视图添加到现有视图控制器(viewControllerB)时,
视图将出现:()
视图显示:()
的viewControllerC在ios 5.0早期版本中不会触发。如果需要调用,则通过检查设备ios版本手动调用此方法

您可以检查ios版本并手动调用委托方法,如下所示

 [viewControllerB addSubview:viewControllerC.view];
 if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) 
    {
        [viewControllerC viewWillAppear:YES];
        [viewControllerC viewDidAppear:YES];
    }
[viewControllerB addSubview:viewControllerC.view];
如果([[UIDevice currentDevice].systemVersion doubleValue]<5.0)
{
[viewControllerC视图将显示:是];
[viewControllerC ViewDidDisplay:是];
}

您说过C的视图控制器是B的子视图

我猜你在做这样的事情:

UIViewController *viewControllerB = [[UIViewController alloc] init];
UIViewController *viewControllerC = [[UIViewController alloc] init];

//add C's view to B
[[viewControllerB view] addSubview:[viewControllerC view]];
如果是这样,则需要添加viewController C作为B的子viewController

//you need to set C to be a child view controller of B
[viewControllerB addChildViewController:viewControllerC];

这应确保正确调用了适当的viewWill/viewDid方法。

c视图控制器是否显示???请显示将c作为“子视图”添加到B的代码。如果不将其作为子视图控制器添加,则不会收到ViewWillDisplay消息。