以编程方式调用情节提要场景(无需点击)?

2020/12/13 10:11 · ios ·  · 0评论

我有一个模态情节提要板场景,我希望所有其他场景都可以访问它。从情节提要中的每个场景为其创建模态选择,将到处乱七八糟的字符串。有没有一种方法可以让我免于争执,而是以编程方式致电现场?

基本上我想做这样的事情:

  MyNewViewController *myNewVC = [[MyNewViewController alloc] init];
  [self presentModalViewController:myNewVC animated:YES];

除了要创建和推送视图控制器类之外,我要向“隔离”(未与segue连接)故事板场景进行模式转换。

是的你可以。做这样的事情来获得对VC的访问权,然后只需Modal Push即可:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:nil];
MyNewViewController *myVC = (MyNewViewController *)[storyboard instantiateViewControllerWithIdentifier:@"myViewCont"];

注意:iOS 6中不建议使用presentModalViewController:animated方法

新代码应为:

NSString * storyboardName = @"MainStoryboard_iPhone";
NSString * viewControllerID = @"ViewID";
UIStoryboard * storyboard = [UIStoryboard storyboardWithName:storyboardName bundle:nil];
MyViewController * controller = (MyViewController *)[storyboard instantiateViewControllerWithIdentifier:viewControllerID];
[self presentViewController:controller animated:YES completion:nil];

在情节提要中,为视图控制器提供一个标识符(在“属性”检查器下),然后使用以下代码将视图向前移动。

UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"STORYBOARDNAME" bundle:nil];
UIViewController *vc = [mainStoryboard instantiateViewControllerWithIdentifier:@"VIEWCONTROLLERIDENTIFIER"];
[self presentModalViewController:vc animated:YES];

我有一种情况,我想从应用程序的主要部分呈现一个视图控制器,其中一个包含设置和帮助等。为此,我希望它位于导航控制器内,这是一个可以从UIBarButtonItem调用的小插件模块。

现在,这可以是当前故事板中的一个,也可以是其他故事板中的。

我想这样做,因为我讨厌故事板上遍布segue线意粉的潜力。

这是操作方法。

- (IBAction)displaySettings:(id)sender
{
    LOG_SELECTOR() // google that for extra goodness

    // FYI, this can be done using a different storyboard like so.
    /*
     NSString * storyboardName = @"MainStoryboard_iPhone"; // possibly use device idiom?
     UIStoryboard * storyboard = [UIStoryboard storyboardWithName:storyboardName bundle:nil];
     */

    // To push a new set of scenes with a new Navigation Controller, it is done like this:
    UINavigationController *settingsNC = [self.storyboard instantiateViewControllerWithIdentifier:@"Settings Nav Controller"];
    OBSettingsUIViewController *settingsVC = [self.storyboard instantiateViewControllerWithIdentifier:@"Settings root"];
    [settingsNC pushViewController:settingsVC animated:NO];

    [settingsNC setModalTransitionStyle:UIModalTransitionStyleCrossDissolve];

    // Present the view controller;
    [self presentViewController:settingsNC animated:YES completion:NULL];
}

在显示的视图控制器(或导航控制器的子类)中,可以有一个UIBarButtonItem来关闭视图控制器的整个显示层次,如下所示:

- (IBAction)dismissThisVC:(id)sender {
     [self dismissViewControllerAnimated:YES completion:nil];
}

希望这可以帮助很多人。干杯。

在此处输入图片说明只需使用导航控制器调用viewcontroller,就可以在viewcontroller中编写此代码,并按照图像中的设置在Storyboard中设置viewcontroller。

ProfileVC *vc = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"ProfileVC"];
[self.navigationController pushViewController:vc animated:YES];

致电导航到其他班级

UIWindow *window = [[[UIApplication sharedApplication] windows] objectAtIndex:0];
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle: nil];

UINavigationController *navController = (UINavigationController *)window.rootViewController;

DumpFeed *dump = [storyboard instantiateViewControllerWithIdentifier:@"DumpFeed"];

dump.isPushed=YES;

dump.strUserId = appDelegate.strFriendid;


[navController pushViewController:dump animated:YES];

这是Swift的版本:

let storyboard = UIStoryboard(name: "Main", bundle: nil)
let myVC = storyboard.instantiateViewControllerWithIdentifier("myStoryId")
self.presentViewController(myVC, animated: true, completion: nil)

您还应该像这样更改情节提要ID:
在此处输入图片说明

我认为使用iOS7可以通过情节提要轻松实现

我目前正在学习iOS7中的新功能,并找到了这个简单的解决方案,但我不确定甚至在以前的版本中也是如此。

首先,您需要将呈现的VC与目标VC连接(这是唯一需要的连接),然后在情节提要的属性检查器中选择要样式化的样式,在身份检查器中为您的VC提供一个StoryboardID,并确保选中了“使用storyboardID”复选框,

如果尚不存在,请将该方法添加到presentingVC中:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

   YourTargetVC * targetVC = 
         (YourTargetVC *)segue.destinationViewController;

   if(nil != targetVC) {

       //Do preparations here
   }

}

现在,当您希望从presentingVC中显示目标VC时,可以使用:

[self performSegueWithIdentifier:(NSString *) sender:(id)];

其中的标识符是您的viewController的storyboardID,发送者是触发该动作的视图,此方法将调用情节[prepareForSegue: sender:]提要场景,因此将调用该方法,允许您在出现targetViewController之前进行最后的修改。

本文地址:http://ios.askforanswer.com/yibianchengfangshidiaoyongqingjietiyaochangjingwuxudianji.html
文章标签: ,   ,   ,  
版权声明:本文为原创文章,版权归 admin 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!