Ios 以编程方式从应用程序中的情节提要加载ViewController,其中包含多个情节提要
我正在开发一个应用程序,该应用程序正在过渡到为应用程序的不同部分提供多个故事板。它们通过在适当的时间以编程方式加载而链接在一起 在用于点击UIButton的函数中,它应该以编程方式加载故事板。代码是这样的:Ios 以编程方式从应用程序中的情节提要加载ViewController,其中包含多个情节提要,ios,objective-c,storyboard,uistoryboard,ios10,Ios,Objective C,Storyboard,Uistoryboard,Ios10,我正在开发一个应用程序,该应用程序正在过渡到为应用程序的不同部分提供多个故事板。它们通过在适当的时间以编程方式加载而链接在一起 在用于点击UIButton的函数中,它应该以编程方式加载故事板。代码是这样的: - (void)loginTapped:(id)sender { UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Home.storyboard" bundle:nil]; UIViewController *vc
- (void)loginTapped:(id)sender {
UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Home.storyboard" bundle:nil];
UIViewController *vc = [sb instantiateViewControllerWithIdentifier:@"homeStoryboard"];
vc.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentViewController:vc animated:YES completion:NULL];
}
故事板的名称在函数中列出:
并被列为项目设置中的目标:
并具有相应的ID,如下所示:
然而,即使在设置了所有这些之后,我仍然会得到错误:
'NSInvalidArgumentException',原因:'在捆绑包NSBundle中找不到名为'Home.storyboard'的情节提要
我试着听从这篇文章的建议,但没有任何效果。如何加载此情节提要?上述注释中提到的解决方案是在提供情节提要名称时不包括.storyboard 旧的 新的 试试这个:
UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Home" bundle:nil];
要使用Objective c在ios中以编程方式调用任何ViewController:
代码中的yourDestinationViewController是视图控制器.h文件
您希望在程序中导入该viewcontroller.h文件,以便以编程方式调用视图控制器
要创建如下所示的属性
#import "viewcontroller.h"
@property viewController *yourDestinationViewController;
能否尝试以情节提要的名称删除.storyboard?因此,只需编写名为:@HomeTry和@Home的故事板,并让该方法计算出文件扩展名。@nathan,Phillip成功了,谢谢!
UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Home" bundle:nil];
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:Home bundle:nil];
yourDestinationViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@homeStoryboard];
[self presentViewController:vc animated:YES completed:^{}];
#import "viewcontroller.h"
@property viewController *yourDestinationViewController;