Ios 以编程方式显示模式视图时出现问题

Ios 以编程方式显示模式视图时出现问题,ios,objective-c,cocoa-touch,uikit,Ios,Objective C,Cocoa Touch,Uikit,我对iOS编程/目标C非常陌生 我希望发生的事件流是:用户从选项卡栏视图控制器中选择选项卡。加载视图后,它将打开一个模式窗口以获取一些信息 查看-(无效)viewDidLoad 我正在尝试立即加载我的年份选择器视图,以便用户可以从我的选择器中选择一个年份(在视图B中),然后在值传递回视图a后关闭模式窗口 现在,第一个视图加载,然后自动转到黑屏。我不确定为什么我的modalYearPickerViewController视图控制器上有一个选择器等 任何以编程方式加载模态视图控制器的提示或帮助都将不

我对iOS编程/目标C非常陌生

我希望发生的事件流是:用户从选项卡栏视图控制器中选择选项卡。加载视图后,它将打开一个模式窗口以获取一些信息

查看-(无效)viewDidLoad 我正在尝试立即加载我的年份选择器视图,以便用户可以从我的选择器中选择一个年份(在视图B中),然后在值传递回视图a后关闭模式窗口

现在,第一个视图加载,然后自动转到黑屏。我不确定为什么我的modalYearPickerViewController视图控制器上有一个选择器等

任何以编程方式加载模态视图控制器的提示或帮助都将不胜感激


谢谢

如果您有该ViewController的xib文件,则还必须加载该文件,为此,您必须调用:

ModalYearPickerViewController *modalYearPickerViewController = 
[[ModalYearPickerViewController alloc] initWithNibName:@"ModalYearPickerViewController" bundle:nil];

如果您使用的是故事板:

UIStoryboard *storyBoard = [self storyboard]; 
这将返回当前视图控制器的情节提要。我假设你的视图控制器A也在你的故事板上

ModalYearPickerViewController *modalYearPickerViewController  = [storyBoard instantiateViewControllerWithIdentifier:@"ModalYearPickerViewController"];
[self presentViewController:modalYearPickerViewController animated:NO completion:nil];
这将从情节提要中实例化视图控制器。但您必须做的另一件事是将视图控制器序列图像板id设置为
ModalYearPickerViewController
。您可以在故事板中设置自定义视图控制器类的正下方设置此选项

ModalYearPickerViewController *modalYearPickerViewController  = [storyBoard instantiateViewControllerWithIdentifier:@"ModalYearPickerViewController"];
[self presentViewController:modalYearPickerViewController animated:NO completion:nil];

完成。

要测试某些内容,请在调用present之前添加此行:modalYearPickerViewController.view.backgroundColor=[UIColor redColor];,它是否将黑色视图更改为红色?另外,尝试移动到ViewDidAppearies视图变为红色,它在ViewDidAppearies中也会执行相同的操作,因此问题是您的模态年份选择器视图控制器配置不正确,展示你是如何设置的,有人可能会帮助你找出为什么选取器没有显示我正在使用情节串连板,而这个场景没有.xib如果你正在使用情节串连板,为什么你要以编程方式展示VC?我只想在某些情况下展示VC。我希望我的用户在我要加载的视图中使用选择器选择一年。在他们选择了他们的年份之后,我想去做一个普通的VC。编辑:正如我提到的,我对这个很陌生。如果我用的是segue,那就这样吧。我想我是朝着这个方向走的,但可能不是……好吧,你有两个选择,要么给模态VC一个标识符,然后使用InstanceViewController WithiIdentifier:加载它,要么创建一个从呈现VC到模态的序列,给它一个标识符,并在需要时使用performsgueWithiIdentifier:发送者自己调用它: