问题标签 [uiapplicationdelegate]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
iphone - 对象可以调用主应用程序吗?
请多多包涵,这对于专家来说可能是一个非常简单的问题,但我是该语言的新手。
我正在尝试创建一个动态生成和发布一系列视图的应用程序,这些视图显示在主窗口中。我遇到的问题是在它们之间进行交换。我希望每个视图都包含导致视图更改的按钮。我可以关闭自己的视图,但我不知道如何命令主程序在完成后将其自己的视图更改为新的视图(即从其子对象之一中向主应用程序发送消息)。我想我可以将应用程序的主视图变成一个全局视图,但我宁愿能够直接联系主应用程序,因为这让我觉得有点整洁并且不太容易出现其他问题。问题是,我不知道主应用程序的标识符。方便的“自我”标识符被经常使用,以至于我 我们从未见过包含可以从外部调用的主应用程序标识符的代码片段。能够将 NIB 文件对象直接链接到主程序共有的属性也很有用。
我是否以完全错误的方式解决这个问题?是否有通用的“主应用程序”标识符?如果没有自动生成一个,是否可以创建一个?
-灰
ios - 终止/暂停时重大更改位置 API 的行为?
这是CLLocationManager文档中使用startMonitoringSignificantLocationChanges描述应用程序行为的部分:
如果您启动此服务并且您的应用程序随后终止,则系统会在新事件到达时自动将应用程序重新启动到后台。在这种情况下,传递给 application:didFinishLaunchingWithOptions: 应用程序委托方法的选项字典包含键 UIApplicationLaunchOptionsLocationKey 以指示您的应用程序是由于位置事件而启动的。重新启动后,您仍然必须配置位置管理器对象并调用此方法以继续接收位置事件。当您重新启动位置服务时,当前事件会立即传递给您的委托。此外,即使在您启动位置服务之前,您的位置管理器对象的位置属性也会填充最新的位置对象。
所以我的理解是,如果您的应用程序终止(并且我假设您不从applicationWillTerminate调用stopMonitoringSignificantLocationChanges ),您将被application:didFinishLaunchingWithOptions的UIApplicationLaunchOptionsLocationKey参数唤醒。此时,您创建CLLocationManager,调用startMonitoringSignificantLocationChanges并在有限的时间内进行后台位置处理。所以我对这一点很好。
上一段只讨论了应用程序终止时会发生什么,并没有建议您在应用程序暂停时做什么。didFinishLaunchingWithOptions的文档说:
该应用程序在后台跟踪位置更新,已被清除,现在已重新启动。在这种情况下,字典包含一个键,表明应用程序由于新的位置事件而重新启动。
建议您仅在您被终止后启动应用程序(由于位置更改)时才会收到此呼叫。
然而,位置感知编程指南中关于重大变化服务的段落有以下说法:
如果您保持此服务运行并且您的应用程序随后被暂停或终止,则该服务会在新的位置数据到达时自动唤醒您的应用程序。在唤醒时,您的应用程序将进入后台并给予少量时间来处理位置数据。因为您的应用程序在后台,所以它应该做最少的工作并避免任何可能阻止它在分配的时间到期之前返回的任务(例如查询网络)。如果没有,您的申请可能会被终止。
这表明如果您的应用程序已暂停,您会被位置数据唤醒,但没有提及您是如何被唤醒的:
- UIApplicationDelegate是否收到一个回调,告诉我我正在从挂起状态恢复到后台状态?
- 位置管理器(在应用程序暂停时被冻干)是否开始接收locationManager:didUpdateToLocation:fromLocation回调?
- 我是否只需要在我的didUpdateToLocation消息中实现代码来检查应用程序状态并在后台模式下进行最少的处理?
在写这篇文章的过程中,我想我可能刚刚回答了我自己的问题,但如果我对这个问题的理解得到更有知识的人的证实,那就太好了。
iphone - 如何在整个程序中使用 UIApplicationDelegate?
我想知道状态栏何时因通话而改变高度。所以我将以下内容放在我的 UIApplicationDelegate 中:
实际上,当我从应用程序中的任何屏幕切换模拟器上的通话状态栏时,消息会出现在控制台中,但我想要做的是将 uitextfield 或 2 移动到另一个类中,因为双高度状态栏尤其弄乱了一个屏幕。我在这个屏幕上自动调整大小没有运气。
所以我的问题是如何在 AppDelegate 中仅通过此方法实现一个屏幕和一个屏幕的代码?它会在所有屏幕上触发,但我只需要它在一个屏幕上。理想情况下,我想要一种仅在一个类中触发的方法。
iphone - 使用 applicationwillenterforeground 作为密码屏幕
在 iOS4 之前,我的应用程序的初始视图控制器将检查 viewWillAppear 中的密码开/关设置变量,如果设置为打开,则会显示一个模式密码屏幕,该屏幕将一直停留在那里,直到输入正确的密码或按下 Home 按钮。
在 iOS4 中,如果我的应用程序一直在后台运行,我希望用户能够放心,如果他们将手机交给某人使用,应用程序中包含的数据就不容易访问。
由于应用程序可以返回到任何屏幕(应用程序最后打开的屏幕),我想我会在所有地方使用 UIApplicationWillEnterForegroundNotification 和本地选择器(重复的 enterPasscode 方法),每个都有正确的视图控制器来推送基于本地屏幕,但必须有更好的方法。
我可能在这里有一个轻微的概念误解。有人可以建议另一种方法或推动我进入下一步。我可以将此作为共享方法,但仍知道要推送的正确本地视图控制器吗?
谢谢
编辑/更新:
简短版:它有效,但可能还有更好的方法(感谢任何帮助)......
我创建了一个带有视图控制器的标准单例。
PasscodeView.h 包含:
PasscodeView.m 包含:
我把它放在 AppDelegate 中:
以及我所有的 viewDidLoad 中的以下内容,当我进入每个屏幕时更新当前视图控制器(只有 2 行,但似乎仍然有更好的方法):
我希望有一种方法可以从 applicationWillEnterForeground 获取当前视图控制器,但我找不到它 - 仍然感谢这里的任何帮助。
为了保持一致性,我更改了一行并添加了一行以获取导航栏以匹配应用程序的其余部分并包含标题。
iphone - iPhone DropBox App Like 实现 - 翻转标签栏以显示登录屏幕
我正在编写一个应用程序,您需要以模态方式显示登录屏幕,并且该应用程序有一个标签栏。
我已将标签栏直接添加到 UIWindow。要将其翻转到新视图(登录视图),我已经覆盖了 applicationDidFinishLaunching,我在其中检查用户是否具有登录凭据,然后我不显示登录屏幕,否则(假设第一次使用或注销情况)我以模态方式显示登录屏幕。我在应用程序内的设置选项卡中提供了注销选项。
当用户第一次登录时,我正在使用 [[UIApplication sharedApplication] delegate] 调用来获取应用程序委托的实例。通过这种方式,我可以访问作为 Application Delegate 一部分的 tabBarController(大多数情况下都是如此)。但是,当我尝试从设置中的注销选项(在未来的生命周期中的某个位置)调用我的 loginViewController 时,相同的调用 [[UIApplication sharedApplication] delegate] 返回我一个我无法使用我的任何方法的委托已定义。它在运行时给了我“发送到实例的无法识别的选择器”错误。
我需要了解调用 [[UIApplication sharedApplication] delegate] 究竟返回了什么?它返回的委托对象是否在应用程序生命周期内发生变化?或者它是整个应用程序生命周期中的单例实例?
其次要解决这个问题,我是否应该将 tabBar 添加到视图(包含在主窗口中)而不是直接将其添加到 UIWindow(如 Tab Bar 应用程序的模板所做的那样,似乎是标准做法)。这种方法是否存在任何已知问题,或者可以这样做。有人试过这个吗?请告诉我。
感谢开发。
iphone - 是否可以继承 UiApplicationDelegate 协议?
老实说,我不知道如何称呼它,所以我将尝试描述它。
UIApplicationDelegate 协议有“application:handleOpenURL:”方法。如果我在我的 ApplicationDelegate 类中实现这个方法,当有人打开我的 url 时它会被调用。
详细信息: http: //developer.apple.com/iphone/library/documentation/uikit/reference/UIApplicationDelegate_Protocol/Reference/Reference.html#//apple_ref/occ/intfm/UIApplicationDelegate/application :handleOpenURL :
但是,我希望我的其他班级(uiviewcontroller)收到这个电话。举一个不同的例子——你可以创建几个类,每个类都可以获得 GPS 位置。是否可以对 UIApplicationDelegate 协议做同样的事情?
我在这里搜索了很多这个主题,但我找不到任何关于如何做到这一点的答案。我知道如何获取我的应用程序委托([[UIApplication sharedApplication] delegate]),但在这种情况下并非如此。
objective-c - 目标 C 基本问题
我使用基于视图的模板制作了一个简单的应用程序。我只将 nslog 放入 viewController 文件中的视图 didload 方法以及 applicationDidFinishLaunch 方法(在 appDelegate 中),以检查首先调用的类文件。
运行后我得到: viewController 先运行,然后是 appdelegate ..但我认为 appdelegate 应该首先根据需要调用其他的......请给我正确的理由。
注意到 --i 没有在我的 appDelegate(inside application didFinishLaunch) 中调用 viewController (didnot make object)。我正在使用ios4
iphone - 在 iPhone 应用初始化时进行多次服务调用
我需要在应用程序中进行多个异步服务调用:didFinishLaunchingWithOptions:来自我的应用程序委托的方法,以便从服务中检索一些数据,以便在我的应用程序中的各种控制器中使用。我可以控制服务,并且我将 API 设计为尽可能 RESTful,因此我需要在应用程序初始化期间进行多次调用。
我想要做的是显示一个带有进度指示器的加载视图 - 类似于 Default.png 中的默认启动屏幕 - 并在服务调用完成并且我有我需要的初始值后删除该视图。如果只有一个服务调用,这很容易做到,因为我可以简单地将该逻辑挂钩到 NSURLConnection 的 connectionDidFinishLoading: 委托方法中,方法是隐藏加载视图并显示根控制器。
但是,对于多个服务调用,它变得很棘手。我可以将所有内容“链接”在一起并触发一个请求,等待它完成/失败,然后触发第二个请求,依此类推,直到我到达最后一个请求。在最后一个请求中,然后我隐藏加载视图并显示普通视图。但是,这可能会因多次服务调用而变得笨拙,并且代码变得难以理解和遵循。
关于此最佳方法的任何建议?
我在想一种解决方案是让一个单例类负责进行服务调用和应用程序初始化。单例对象将在启动时并行触发所有必要的请求,并且每个失败/完成回调将检查每个请求是否已完成。如果所有请求都已完成,那么它可以调用应用程序委托中的某个方法并告诉它隐藏加载视图、显示根控制器等。
想法?
ios - 处理 applicationDidBecomeActive - “视图控制器如何响应应用程序变为活动状态?”
UIApplicationDelegate
我的主 AppDelegate.m 类中有协议,并applicationDidBecomeActive
定义了方法。
我想在应用程序从后台返回时调用一个方法,但该方法在另一个视图控制器中。如何检查方法中当前显示的视图控制器applicationDidBecomeActive
,然后调用该控制器中的方法?
iphone - iPhone:使应用程序委托使应用程序崩溃的 NSTimer 无效
我正在尝试从我的应用程序委托中运行一个方法,该方法将一个对象保存在其他类中,并使计时器无效。我进行了设置,以便当我的应用程序退出时,它会在我的类中运行该方法并保存并停止计时器。
在应用程序委托中:
它在“timeRun”类中调用的方法:
但是,我遇到了崩溃:
为什么这会使我的应用程序崩溃?