【问题标题】:SpliteViewController setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key _masterColumnWidth in iPadSpliteViewController setValue:forUndefinedKey:]:这个类对于 iPad 中的 _masterColumnWidth 键不兼容键值编码
【发布时间】:2016-10-06 07:16:18
【问题描述】:

我已将应用程序升级到iOS 10XCode 8,升级后应用程序在 iPad 中崩溃,日志如下:

*** 由于未捕获的异常“NSUnknownKeyException”而终止应用程序,原因:“[ setValue:forUndefinedKey:]:这个类不是键值 _masterColumnWidth 键的编码兼容。'

查看下面的完整崩溃日志:

* 由于未捕获的异常“NSUnknownKeyException”而终止应用程序,原因:“[ setValue:forUndefinedKey:]:这个类不是键值 键 _masterColumnWidth 的编码兼容。 * 第一次抛出调用堆栈:( 0 CoreFoundation 0x000000010bdc634b exceptionPreprocess + 171 1 libobjc.A.dylib
0x000000010b32b21e objc_exception_throw + 48 2 核心基础
0x000000010bdc6299 -[NSException raise] + 9 3 基础
0x0000000106ace2ff -[NSObject(NSKeyValueCoding) setValue:forKey:] + 291 4 UIKit 0x000000010803c8c3 -[UIViewController setValue:forKey:] + 88 5 Profiler 0x0000000104319ae5 -[AppDelegate 应用程序:didFinishLaunchingWithOptions:] + 3765 6 UIKit
0x0000000107e9968e -[UIApplication _handleDelegateCallbacksWithOptions:isSuspended:restoreState:] + 290 7 UIKit 0x0000000107e9b013 -[UIApplication _callInitializationDelegatesForMainScene:transitionContext:] + 4236 8 UIKit 0x0000000107ea13b9 -[UIApplication _runWithMainScene:transitionContext:completion:] + 1731 9 UIKit 0x0000000107e9e539 -[UIApplication workspaceDidEndTransaction:] + 188 10 前板服务 0x00000001110ff76b __FBSSERIALQUEUE_IS_CALLING_OUT_TO_A_BLOCK
+ 24 11 FrontBoardServices 0x00000001110ff5e4 -[FBSSerialQueue _performNext] + 189 12 FrontBoardServices 0x00000001110ff96d -[FBSSerialQueue _performNextFromRunLoopSource] + 45 13 核心基础 0x000000010bd6b311 CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION + 17 14 核心基础 0x000000010bd5059c __CFRunLoopDoSources0 + 556 15 核心基础 0x000000010bd4fa86 __CFRunLoopRun + 918 16 核心基础
0x000000010bd4f494 CFRunLoopRunSpecific + 420 17 UIKit
0x0000000107e9cdb6 -[UIApplication_run] + 434 18 UIKit
0x0000000107ea2f34 UIApplicationMain + 159 19 探查器
0x000000010458fb9f 主 + 111 20 libdyld.dylib
0x000000010cfa968d 开始 + 1 21 ???
0x0000000000000001 0x0 + 1)

使用下面的代码设置masterColumnWidthSpliteViewController

SpliteViewController *objSpliteViewController = [[Navigation getStoryBord] instantiateViewControllerWithIdentifier:@"SpliteViewController"];

[objSpliteViewController setValue:[NSNumber numberWithFloat:370.0f] forKey:@"_masterColumnWidth"];

在 iOS 版本低于 10 和 XCode 版本低于 8 时运行良好。

【问题讨论】:

    标签: objective-c ipad uisplitviewcontroller ios10 xcode8


    【解决方案1】:

    由于 iOS 10 无法访问此内部属性。一般来说,访问这些属性是一种冒险的做法。您应该使用适当的属性或方法来修改主列的宽度:

    1.属性

    objSpliteViewController.maximumPrimaryColumnWidth = 370.0;
    objSpliteViewController.minimumPrimaryColumnWidth = 370.0;
    

    2。方法

    [objSpliteViewController setMaximumPrimaryColumnWidth:370.0];
    [objSpliteViewController setMinimumPrimaryColumnWidth:370.0];
    

    同时设置(最大和最小)以达到精确的宽度,或者只设置其中一个以防止列变得太宽或太窄。

    【讨论】:

      猜你喜欢
      • 2015-05-08
      • 2016-11-13
      • 1970-01-01
      • 2014-01-12
      • 1970-01-01
      • 1970-01-01
      • 2017-08-07
      • 1970-01-01
      • 2015-09-13
      相关资源
      最近更新 更多