• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - Obj-C 以编程方式更改 ViewController(两个 Storyboard)

[复制链接]
菜鸟教程小白 发表于 2022-12-12 16:13:53 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

首先,我想强调一下,这段代码可以运行,但看起来很糟糕。我需要以编程方式更改 View Controller (不能使用 segue),所以我使用以下代码:

NSString *storyboardName = @"Main";
UIStoryboard *storyboard =
    [UIStoryboard storyboardWithName:storyboardName bundle:nil];
PurchaseViewController *vc = [storyboard
      instantiateViewControllerWithIdentifier"urchaseViewController"];
[controller presentViewController:vc animated:YES completion:nil];

显然它的工作原理。不幸的是,在创建第二个 Storyboard(iPad)后,我被迫将此代码更改为:

#define IDIOM UI_USER_INTERFACE_IDIOM()
#define IPAD UIUserInterfaceIdiomPad

/* 
   ...
*/

NSString *storyboardName;
if (IDIOM == IPAD)
    storyboardName = @"Main_iPad";
else
    storyboardName = @"Main";
UIStoryboard *storyboard =
[UIStoryboard storyboardWithName:storyboardName bundle:nil];
PurchaseViewController *vc = [storyboard
                              instantiateViewControllerWithIdentifier"urchaseViewController"];
[controller presentViewController:vc animated:YES completion:nil];

它一定是比这更好的解决方案,但我没有找到。你知道替代(更好的)解决方案吗?



Best Answer-推荐答案


enter image description here

保持您的 iPad Storyboard名称与 iPhone 相同,只需在 '.storyboard' 之前附加 '~ipad' 并在 info.plist 中添加 'Main storyboard file base name (iPad)' 并将 Storyboard 名称作为值。然后使用下面的代码根据设备获取 Storyboard名称。

NSBundle *bundle = [NSBundle mainBundle];
    NSString *storyboardName = [bundle objectForInfoDictionaryKey"UIMainStoryboardFile"];
    UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:storyboardName bundle:bundle];

希望这会有所帮助。

关于ios - Obj-C 以编程方式更改 ViewController(两个 Storyboard),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32393755/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap