小编JRV*_*JRV的帖子

调用popToRootViewControllerAnimated时未调用viewWillDisappear

我在遗留应用程序上工作,并且发现我的view[Will/Did]Disappear方法并不总是被正确解雇.

情况是,我UIViewController在AppDelegate中将(自定义)设置为rootViewController.这个rootViewController有一个UINavigationController,它上面有两个视图控制器.当用户按下主页按钮时,用户退出.当他稍后返回应用程序时,应用程序调用[UINavigationController popToRootViewControllerAnimated:YES]然后显示UIViewController用于登录的模式.

问题是:当我UINavigationController正常推/弹时,我的viewWillDisappear方法被正确调用.但是当我使用该popToRootViewControllerAnimated:方法时,viewWillDisappear不会弹出任何弹出的viewControllers.

在互联网上搜索只有两个可能的原因:

我的应用程序中没有这些建议.我不知道在哪里看.有人建议应用中出错了吗?

objective-c uiviewcontroller ios

13
推荐指数
1
解决办法
1万
查看次数

cocoapods命令行构建失败

我刚刚在我的项目中添加了cocoapods,但无法让我的构建脚本再次运行.我使用此命令进行构建:

xcodebuild -workspace MyProject.xcworkspace -scheme MyScheme SYMROOT=./build
Run Code Online (Sandbox Code Playgroud)

但是,当我执行构建时,它会失败并显示错误消息ld: library not found for -lPods.

如果我在没有SYMROOT设置的情况下构建,它可以正常工作.但我更希望保持SYMROOT参数,以便我可以像以前一样保持我的归档逻辑.

到目前为止,我的结论是,因为SYMROOT已设置,xcodebuild无法找到构建的Pods库.我怎样才能解决这个问题?

编辑:

我在构建之后调查了文件结构:

  1. 如果我没有设置SYMROOT,则文件夹中有一个带有二进制文件(Library/Developer/Xcode/DerivedData/MyProject-eegsyonkmltdqhggwyqytoqbwath/Build/Products/)的libPods.a文件.
  2. 如果我如上所述设置SYMROOT,则./build中不存在libPods.a文件

因此,似乎没有正确设置pod文件的构建输出.这是xcodebuild中的一个问题,还是有一种方法可以确保将pod文件构建到此文件夹中?

下图显示了两个目录中的构建输出的比较,以使其更清晰: 构建输出的比较

cocoapods xcode5

10
推荐指数
1
解决办法
8360
查看次数

IBInspectable和NSLocalizedString

我在Localizable.strings文件中编写了很多本地化文本,我正在寻找一种方法来使用它们并在界面构建器中显示它们.也就是说,不是为我的所有视图创建出口并在代码中设置文本,我想创建一个IB_DESIGNABLEUILabel子类,它必须访问我的Localizable.strings文件,然后直接在界面构建器上显示本地化文本.

问题是,NSLocalizedString在接口构建器中没有给出任何结果,但仅在我实际运行代码时.有没有办法告诉界面构建器用于本地化的文件(例如在prepareForInterfaceBuilder中)?

objective-c interface-builder xcode6

8
推荐指数
2
解决办法
2123
查看次数

覆盖 Swift 中的全局函数

是否可以在 Swift 中覆盖全局函数?

具体来说,我想覆盖NSLocalizedString. 这在 Objective-c ( #undef/ #define) 中很容易,但在 Swift 中NSLocalizedString被定义为全局函数,我找不到覆盖它的方法。

可以创建自己的函数MyLocalizedString,它调用原始函数,NSLocalizedString但随后我将失去 AppCode 对 Localizable.strings 文件的巧妙支持(本地化键的自动完成,IDE 显示本地化文本),我必须确保每次使用NSLocalizedString我的代码中的of被替换为MyLocalizedString.

编辑:我想达到什么目标?我希望能够动态更改 GUI 中的字符串。最简单的方法是重新定义 NSLocalizedString,然后自己在表中查找字符串。如果它不存在,我将使用 Localizable.strings 中的原始字符串。

swift

5
推荐指数
0
解决办法
419
查看次数

Core Data何时刷新到磁盘?

我在我的应用程序中使用Core Data,并发现了模拟器的一些奇怪的行为:当我在我的应用程序中向Core Data添加一些数据并使用XCode中的"stop"按钮退出模拟器时(或者只是按下Cmd-Q),下次启动模拟器时,数据不会存储在数据库中.经过一些测试,我发现数据存储到磁盘:

  • 如果我按下主页按钮立即.(差不多-这可能的退出应用程序之前,数据存储,如果退出非常快.)
  • 如果我在添加数据后让应用程序运行一段时间(至少约20秒).

调用[NSManagedObjectContext save:]无效.行为是一样的.

所以我的问题是:这种行为的原因是什么?在退出之前有没有办法强制刷新到磁盘?当在设备上运行时,我是否有以这种方式丢失数据的风险(个人而言,我没有看到任何,除了强制关闭,但奇怪的行为困扰我一点)

core-data objective-c ios5

4
推荐指数
2
解决办法
3346
查看次数

viewDidDisappear没有被调用

我在一个应用程序上工作,我的视图有问题[Will/Did]消失方法在返回应用程序时没有被触发.

案例是,我有UINavigationController,它上面有两个视图控制器.当用户按下主页按钮时,用户退出.当他稍后返回应用程序时,以下(简化)代码在我的AppDelegate中运行:

- (void)applicationDidBecomeActive:(UIApplication *)application
{
    [(UINavigationController *)self.window.rootViewController popToRootViewControllerAnimated:NO];
    [self.window.rootViewController presentModalViewController:loginViewController animated:NO];
}
Run Code Online (Sandbox Code Playgroud)

当我弹出导航控制器堆栈上的视图控制器时,我希望view[will|did]disappear可以调用这些方法.然而,事实并非如此,因为当iOS要解雇这些方法时,它们(显然)不再出现​​在屏幕上.似乎模态视图控制器已经接管了.

如果我不提供模态视图控制器,则按view[will|did]disappear预期调用方法.

我的问题是:如果我想view[will|did]disappear调用这些方法,那么我该如何构建我的代码呢?有没有更好的地方来呈现我的模态loginViewController?

编辑:

为了更清楚地显示我的问题,我在这里创建了一个非常简单的测试项目:https://github.com/JohanVase/ModalViewCauseMissingViewDisappearCalls.请尝试几次按照应用程序中的说明操作,看看我没有在viewWillDisappear方法中发布我的"资源".

objective-c uinavigationcontroller presentmodalviewcontroller ios appdelegate

4
推荐指数
1
解决办法
5498
查看次数