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

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

你可以从 Object Library中拖控件(右下角)到viewcontroller 中,并修改它的布局。...UIWindow *window; @end         当使用故事板的时候,应用程序委托必须从 UIResponder 开始继承(原先则直接从NSObject继承),同时还有一个 UIWindow...在 AppDelegate.m 中,它实际上什么也没做,所有的方法都是空的。甚至application:didFinishLaunchingWithOptions:也只是简单地返回 Yes。...由于无法从nib中加载应用程序委托,也无法从故事板文件中加载应用程序委托,我们必须告诉UIApplicationMain 应用程序委托类的名称,否则它根本无法找到应用程序委托类。...如果是使用IB ,在 MainWindow.xib中会有应用程序委托的一个引用,同时你可以将顶层的ViewController 连接到应用程序委托的IBOutlet 属性。但现在使用故事板就不可能了。

1.3K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    解决 iOS 15 上 APP 莫名其妙地退出登录 解决 iOS 15 上 APP 莫名其妙地退出登录

    非常令人惊讶的是,这并不是我们在测试 iOS 15 beta 版的时候发现的问题。 如果你是来找修复方法的,那就直接向下滚动到结论,但如果你想了解更多关于我们如何调试这个特定问题,那就开始吧。...看一下这段代码,我们调用 SecItemCopyMatching 方法来加载我们的访问令牌,它返回数据以及描述结果的 OSStatus 代码。...为了避免在我们的AppDelegate上持有一些隐式解包的可选属性,我们在init()方法中进行了一些设置,其中一部分涉及从Keychain中读取访问令牌。...,因此我坚信我应该能够从 AppDelegate.init()中的Keychain读取数据。...(或对应委托的回调/通知)并相应处理。

    1.6K20

    解决 iOS 15 上 APP 莫名其妙地退出登录

    非常令人惊讶的是,这并不是我们在测试 iOS 15 beta 版的时候发现的问题。 如果你是来找修复方法的,那就直接向下滚动到结论,但如果你想了解更多关于我们如何调试这个特定问题,那就开始吧。...看一下这段代码,我们调用 SecItemCopyMatching[2] 方法来加载我们的访问令牌,它返回数据以及描述结果的 OSStatus 代码。...:) — 成功 ViewController.viewDidAppear(_:) — 成功 所以这(一半)解释了它。...为了避免在我们的AppDelegate上持有一些隐式解包的可选属性,我们在init()方法中进行了一些设置,其中一部分涉及从Keychain中读取访问令牌。...(或对应委托的回调/通知)并相应处理。

    93810

    使用CoreML和ARKit进行人脸检测和识别

    必须删除main.storyboard并设置您的AppDelegate.swift文件,如下所示: func application(_ application: UIApplication, didFinishLaunchingWithOptions...创建场景并将其添加到子视图 只有一个ViewController,它将是应用程序的主要入口点。 在这个阶段,需要导入ARKit并实例化一个ARSCNView自动渲染来自设备相机的实时视频作为场景背景。...捕获相机帧并将其注入模型 需要使用场景委托来扩展ViewController ARSCNViewDelegate。...需要两个委托方法,一个用于设置面部检测,另一个用于在检测到面部时更新场景: 人脸检测: func renderer(_ renderer: SCNSceneRenderer, nodeFor anchor...这是从sceneView属性中获取它的简单方法: guard let pixelBuffer = self.sceneView.session.currentFrame?.

    2.4K20

    IOS开发之视图和视图控制器

    视图(View), 视图控制器(ViewController)是IOS开发UI部分比较重要的东西。在学习视图这一块的东西的时候,感觉和Java Swing中的Panel差不多。...窗口是用来显示视图的,下面我们将会结合着实例来具体的学习一下IOS中的View和ViewController         1.首先我们需要建一个EmptyProject来测试我们的View和ViewController...我们空工程的文件结构如下,我们只需在AppDelegate.m中添加我们的视图,还是那句话为了更好的理解我们的视图,所有视图的创建和配置我们都用代码编写。 ?         ...index来区分,这个值从0开始以步长1依次增加,index为0的时候代表视图层次的最底层,下面是苹果官方文档对Views的介绍的截图: ?     ...控件是一种特殊类型的视图,继承子UIControl超类,通常要绑定回调方法(比如Target-Action回调和委托回调),用于用户交互。控件包括按键,文本框,滑块,和切换开关。

    1.8K70

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

    然后,从您的应用程序的目录下需要再次运行pod install。 podhelper.rb脚本将您的插件Flutter.framework和App.framework嵌入到您的项目中。...#import "ViewController.h" #import "AppDelegate.h" @import Flutter; @interface ViewController () @end...6.1 FlutterAppDelegate 有的应用可能不能像我们的demo中那样,直接让AppDelegate继承自FlutterAppDelegate,这种方法是官方推荐,好处就是可以监听到诸如点击状态栏回到顶部此类操作...但是这并不是强制的,我们在不能直接继承的情况下,为了能够让我们的Flutter能够响应一部分的App生命周期事件,我们可以在AppDelegate.h中遵循FlutterAppLifeCycleProvider...Demo中AppDelegate2.m @end 6.2 Dart 入口(Dart EntryPoint) FlutterEngine调用run方法,默认情况下,运行的是lib/main.dart文件中的

    2.5K30

    IOS开发之自定义Button(集成三种回调模式)

    是我们会用上上面的方法,首先新建一个ViewController, 然后把我们新建的ViewController在AppDelegate.m中设置成我们的根视图,我们关于Button的初始化和配置都写在...ViewController中的ViewDidLoad中代码如下: 1 MyViewController *myViewController = [[MyViewController alloc]...     1.在上面的基础上添加上委托回调,通过委托回调添加按钮是否可用,按钮将要点击和按钮点击后的事件,首先我们得有协议来声明这三个方法。...1 //注册委托回调 2 button.delegate = self;     6、MyViewController要实现MyButtonDelegate,并实现相应的方法 1 /...Block回调(把上面的委托回调改成Block回调),和之前微博中的Cell的Block回调类似,首先在MyButton.h中声明我们要用的Block类型,然后提供Block的set方法: //button

    1.2K80

    【iOS 开发】iOS 开发 简介 (IOS项目文件 | MVC 模式 | 事件响应机制 | Storyboard 控制界面 | 代码控制界面 | Retina 屏幕图片适配)

    文件 与 真实文件系统中的目录文件不是对应的; -- 逻辑分组 : Xcode 将 真实文件进行了逻辑分组, 并不是真实的文件结构; -- 自定义分组 : 开发者还可以创建自定义的分组; mac 中的...委托对象全局可用, 定义全局变量即 将该变量设置为 UIApplication 的委托对象; -- 数据交换 : 获取委托对象, 可以向其中存取数据, 可以作为 IOS 应用的通信中心, 程序组件之间通过委托对象进行数据交互...; -- 处理生命周期事件 : 应用程序委托对象还处理 IOS 应用的各种生命周期事件, 处理应用执行过程中的事件循环; (2) AppDelegate.h 详解 OCAppDelegate.h 详解...// 开发者还可通过该方法来保存足够的状态数据, // 这样保证用户重新启动该应用时能正确恢复到当前状态 // 如果该应用程序支持后台执行,当用户退出时,系统调用调用该方法,而不是调用 // applicationWillTerminate...AppDelegate 委托类对比 委托类代码对比 :  -- xib 委托类 : 加载完成方法; - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions

    5K30

    iOS数据埋点统计方案(附Demo): 运行时Method Swizzling机制与AOP编程(面向切面编程)

    场景需求 统计UIViewController加载次数 统计UIButton点击次数 统计自定义方法的执行 统计UITableView的Cell点击事件 工程说明,首页Test1ViewController...替换系统方法的分类:通过运行时Runtime的办法 -- 利用Method Swizzling机制进行方法替换:替换原来的需要在里面统计却不含统计逻辑的方法 为 新的包含了统计逻辑的方法。...为VC设计的分类:运行时Method Swizzling方案 ? 场景需求:需要监听全局的某一类的同一方法 这种方案被监听的方法单一,但会影响全局的所有的类的该方法。...为全局AppDelegate设计的分类:AOP编程方案 场景需求:需要监听不同类,不同按钮,系统方法,及表单元点击事件 方案特点:是可代码配置需要监听的清单字典,并且需要注入的统计代码块block...在AppDelegate的类方法中根据Plist监听清单进行HOOK 场景需求:需要监听不同类,不同按钮,系统方法,及表单元点击事件 方案特点:是可代码配置需要监听的清单Plist,但是不能将需要注入的统计代码块

    91510

    【iOS开发】自动识别剪贴板内容

    ,第一行代码就搞定了,if 语句中判断了一下剪贴板中的内容是不是链接,注意http和https都要写上,这点很容易被忽略(在浏览器地址栏中复制以www.开头的文本会自动在剪贴板中转为http或https...更值得注意的是,因为你需要让 App 在每次从后台进入前台的时候都检测一下剪贴板中有没有链接,所以以上方法要放在 AppDelegate 文件的 applicationWillEnterForeground...AppDelegate.swift 而这个方法中是不能通过 self 来调用 ViewController 的,所以要曲线救国的话,你需要手动获取 Storyboard、ViewController,再设置...和 applicationDidBecomeActive 这两个方法,前者是指 App从后台进入前台,后者是指 App处于活跃状态,所以前者相对于后者,缺少的部分是,当 App 刚刚启动,而不是从后台取出的时候...因为你不能要求每次都让用户先把 App 打开,再往剪贴板里面填东西,再跳转回来,所以个人建议把上面的代码放在 applicationDidBecomeActive 方法中,而不是 applicationWillEnterForeground

    1.5K30

    iOS中的NSFileManager

    NSFileManager NSFileManager是用来管理文件系统管理的 它可以用来操作常见文件夹 NSFileManager常用方法 获取NSFileManager NSFileManager...file fileExistsAtPath:@"/Users/soso/Desktop/demo1/NSFileManager/string.txt"]; 判断一个文件是否存在,且是否是一个文件夹 //该方法的返回值是说明传入的路径对应的文件或文件夹是否存在...//第二个参数是用于保存判断的结果,如果是一个目录,那么就是赋值为YES,若不是就是NO BOOL dir = NO; BOOL flag = [file fileExistsAtPath:@"/Users...", "Assets.xcassets", "ViewController.m", "Base.lproj", "main.m", "AppDelegate.m"...error:是否创建成功 注意:该方法只能用于创建文件夹,不能用于创建文件,路径最后的test就是新创建的文件夹 */ BOOL flag = [file createDirectoryAtPath:

    40910

    Mac开发基础练习:制作一个状态栏(NSStatusBar)上的App(二)

    我们在练习(一)中完成了状态栏图标点击,弹出内容视图的效果,但是项目看起来还有些体验不是非常符合用户习惯,(例如点击应用之外的其他地方,popover 并没有自动消失)我们继续来添加和完善一些用户功能,...1.4 选中Main.storyboard文件,从项目中删除,并清空工程配置,入下图: ?...像iOS中一样,应用启动加载完成后,设置UI是从AppDelegate的这个方法-applicationDidFinishLaunching:开始的,如果我们在上面的工程中对这个方法设置调试断点,你会发现应用启动后...main.m文件实现代码 1.6 因为我们去除了window,因此ViewController对我们来说已经没有价值了,我们只需要把之前在ViewController中写的代码,放置到AppDelegate.m...AppDelegate.m文件 如果你在这中间的步骤没有错误,那么再次运行工程,你会发现状态栏的上图标又出现了,并且我们之前实现的功能也都可以正常响应了^_^ 整个工程的代码,可以从这里下载StatusBarDemoApp

    1.5K30

    iOS性能优化之启动优化

    复制代码 文件编译顺序是Xcode中Build Phases→Compile Sources的文件排列顺序 文件中方法/函数的符号顺序,就是代码的书写顺序 以ViewController.m为例,...通过LinkMap文件中的顺序,查看最终的排序是否符合预期 在工程根目录创建.order文件 打开hk.order文件,写入启动时需要的方法/函数 +[ViewController load] +...[ 2] +[AppDelegate load] 0x100005FAC 0x0000009C [ 3] _main 0x100006048 0x00000048 [ 1] -[ViewController...复制代码 读取最后一个值,要在stop地址的基础上减去4字节 从start至stop,读出值为01~0e,这些值表示当前项目中方法/函数的符号个数 5.3 __sanitizer_cov_trace_pc_guard...获取符号名称,如果不是+[和-[开头,视为函数或Block,前面加_ 如果符合名称在数组中存在,跳过。

    1.9K11
    领券