首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在不使用故事板的情况下获取viewcontroller的NibName

在不使用故事板的情况下,可以通过以下步骤获取viewcontroller的NibName:

  1. 首先,确保你的viewcontroller类已经创建并与一个对应的xib文件关联。
  2. 在viewcontroller类的初始化方法中,可以使用NSStringFromClass函数获取类名的字符串表示。
  3. 使用字符串拼接的方式,将类名与".xib"后缀连接起来,形成完整的NibName。

以下是一个示例代码:

代码语言:swift
复制
class MyViewController: UIViewController {
    init() {
        super.init(nibName: nil, bundle: nil)
        
        let className = NSStringFromClass(type(of: self))
        let nibName = className + ".xib"
        
        // 使用nibName进行后续操作
        print("NibName: \(nibName)")
    }
    
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
}

在上述示例中,我们通过获取viewcontroller类的类名,然后拼接".xib"后缀,得到了对应的NibName。你可以根据实际情况进行后续操作,比如加载xib文件或者进行其他处理。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Xcode:处理故事更好方式 享受Interface Builder提示和技巧

使用大小类变得更加直观,缩放故事能力非常方便,Interface Builder中完整预览功能非常棒。...源代码控制:故事合并冲突很难解决,因此简单地在单独故事中工作将使您团队生活更轻松。 故事文件变得沉重且难以导航。...您需要为每个ViewController分配storyboard ID,这很容易出错:每次要在代码中使用ViewController时都需要对此ID进行硬编码 如何在项目中连接不同故事?...1.使用Xcode 7中引入故事引用 2.在代码中连接故事。 你可以阅读更多关于第一种方式在这里。 我将介绍第二种方式,因为它仍然常用于复杂项目。...,您需要提供viewController故事ID,并且每次创建HomeViewController时都需要使用此模式。

1.4K30
  • 【IOS开发基础系列】Storyboard专题

    但是,当你使用故事时候,所有的UI 都放到了一个故事中, MainWindow.xib 不再使用。         ...那么,在没有 MainWindow.xib 文件情况下故事是怎样被加载到app中呢?         ...但是应用程序委托不知道PlayersViewController在哪里,因此我们不得不把它从故事中找出来。这是使用故事一个令我烦心不已不足。...如果是使用IB ,在 MainWindow.xib中会有应用程序委托一个引用,同时你可以将顶层ViewController 连接到应用程序委托IBOutlet 属性。但现在使用故事就不可能了。.../details/7565690 3.1.4 一个VC继承自另一个VC,对于父类View,如果子类初始化时想不一样大小,如何在故事中处理 4 开发技巧 4.1 View分辨率 4.1.1 wAny和

    1K30

    ARKit 配置-在您AR项目的幕后

    用户界面 了解构成起始AR应用程序主要元素非常重要。首先,让我们来看看用户界面。 故事 让我们选择Main.storyboard文件。故事反映了用户界面的外观。...您还可以添加其他视图并管理它们之间链接。基本上,故事是设计师最好朋友。 文件大纲 在左侧文档大纲中,您可以看到所有对象显示方式。您可以选择一个图标直接导航到该对象。...查看控制器类 在导入下方,ViewController已被声明为UIViewController类一部分,并且与故事视图相关。类具有属性,方法和协议,所有这些都在开发中被利用。...场景视图 在课程内部,从故事到ARSCNView链接被称为SceneView。在Xcode中,此链接称为IBOutlet。您也可以在故事中看到引用插座。...在“ 信息属性列表 ”部分下,有一个隐私密钥 - 相机使用说明,。默认情况下,已在模板中写入显示消息为此应用程序将使用摄像头进行增强现实。如果您想从头开始AR应用程序,这是必须步骤。 ?

    2.5K20

    在Swift中使用工厂进行依赖注入

    另一个可能解决方案(在这种情况下很常见)是让MessageSender成为一个单例。...这样我们就可以很容易地从任何地方访问它,并通过简单地使用共享实例将其注入MessageViewController中: let viewController = MessageViewController...如果我们能有某种形式工厂,我们可以简单地要求它为给定消息创建一个MessageViewController,这将是非常方便(甚至比引入一个单例更方便),而且非常干净,像这样: let viewController...这使得许多对象与它们依赖关系更加松散,这在你想要重构或改变事物情况下非常有帮助。 那么,我们如何才能使上述情况发生呢?...由于我们已经将所有的工厂定义为协议,我们可以通过实现任何给定工厂协议特定测试版本,在测试中轻松地模拟它们。我将在未来博文中写更多关于模拟和如何在测试中充分利用依赖注入内容。 你怎么看?

    82420

    为你 iOS App 构建分离测试

    一般性问题   使用分离测试(也称为 A/B 测试),我们拥有无限测试可能性。...我们还将创建一个管理器,负责根据与测试标识符相关数据库中存储获取拆分测试值: class SplitTestingManager {  static func getSplitValue<Value...在这种情况下,我们需要创建两个不同 View:一个用于社交共享,另一个用于新闻稿,并分别添加到 View Controller Content View 区域内。   ...我们总是可以使用我们需要任何对象进行分离管理,在这种情况下,假设我们需要一个保存购买按钮颜色值对象: class PurchaseButtonColorSplitTest: SplitTestProtocol...缓存 作为测试值,以使 App 在用户使用时候保持一致。

    48520

    iOS中storyboard故事使用Segue跳转界面、传值

    ,但后来又出了一种方式,就是storyboard故事板子,其实storyboard和xib文件很像,最大不同之处在于一个xib文件对应一个ViewController视图控制器,而storyboard...创建工程: 首先创建一个新工程,这里我创建是Single View Application,就可以自带故事了,如下图: 创建好后可以在左边文件列表中看到Main.stroyboard,这个就是故事文件了...使用Segue实现页面跳转: 要在故事使用Segue跳转,非常简单和方便,把鼠标移到第一个视图按钮上,按住鼠标右键不放,拖动鼠标到第二个视图,松开,然后会出现一个选项框,这里是要选择Segue模式...Segue,后面代码里再说明,这里我们只有一个跳转所以先写; Segue:可以选择Segue模式,比如刚才modal、push等等; 如果模式是modal,还有如下选项,其他模式选项不同: Presentation...PS:上面曾经说到过Segue属性里有一个Identifier,就是在这个方法中用来判断是哪个Segue在起作用,: if ([[segue identifier] isEqualToString:

    1.5K20

    Flutter - 混合开发

    混合开发 一、创建Flutter模块 使用混合开发就不能像之前一样直接上来就创建一个 Flutter 项目,而是要使用 Flutter模板 # flutter_module_lxf 可以随便你命名...使用 两个步骤 获取 Flutter引擎 FlutterEngine 通过 FlutterEngine 创建 FlutterViewController 基本使用 AppDelegate 类中声明一个...使用 FlutterAppDelegate 使用 FlutterAppDelegate这个不是必要操作,但是如果你想让 Flutter模块 也能使用原生功能的话,建议使用 原生功能 处理 openURL...(:Xcode)来运行项目,每次修改我们 Flutter模块 代码,也就需要重新运行才能看到效果,不像之前按下 Cmd + s 就能进行热重载。...如果你使用是 Android Studio,可以直接选择对应设备后,点击右边 Flutter Attach 按钮,执行成功后就可以跟之前一样按 Cmd + s 进行热重载了。 ?

    1.4K20

    已有iOS工程中加入Flutter之Cocoapods+Flutter环境方式集成

    dart package name规范,要以小写单词和_相连,否则创建不成功 先给一个规范例子: Last login: Wed Dec 25 09:05:21 on console KKdeMacBook-Pro...这允许使用Flutter模块最新版本进行快速迭代,而无需在Xcode之外运行其他命令。...但是这并不是强制,我们在不能直接继承情况下,为了能够让我们Flutter能够响应一部分App生命周期事件,我们可以在AppDelegate.h中遵循FlutterAppLifeCycleProvider...Demo中AppDelegate2.m @end 6.2 Dart 入口(Dart EntryPoint) FlutterEngine调用run方法,默认情况下,运行是lib/main.dart文件中...main()入口,我们也可以运行不同入口,通过使用runWithEntrypoint,传入一个字符串参数,以使用其他dart入口(入口在lib/main.dart文件中),但是请注意,除main()

    2.3K30

    关于IB_DESIGNABLE IBInspectable那些需要注意

    这两个关键字不是今天重点,看个Demo就会使用了。...但是很不幸是,在这种情况下,点击Debug,每次都会告诉你“Finishing debugging instance of XXXX for interface Builder”,即使你在你自定义View...每次我们取mainBundle时候,都是用默认方法 let nib = UINib(nibName: String(StripyView), bundle: nil)复制代码 这里在Xib / Storyboard...当我们用了IB_DESIGNABLE关键字以后,Xib/StoryBoard会在运行整个程序情况下,把这个View代码编译跑一遍,由于没有程序上下文,所有的编译就只在这个view代码中进行。...以上就是我和大家分享IB_DESIGNABLE / IBInspectable使用过程中遇到一些“坑”。

    1.5K30

    iOS对UIViewController生命周期和属性方法解析

    在面向对象语言中,是对象,就一定要有生命周期,UIViewController也例外,生命周期管理Controller作用范围和时间,也管理其内对象作用范围和时间。...,可以使用segue.destinationViewController获取。         ...        这部分内容和方法可能我们接触用到并不多,但是在某些情况下使用这些方法可以大大方便某些逻辑。...1、parentViewController         UIViewController里面封装了一个数组,可以存放其子ViewController,系统中使用例子就是导航和tabBar这类控制器...,我们根本不需要代理,block,通知等这样复杂手段,只需要获取跳转到它Controller,直接设置即可。

    2.9K20
    领券