UISegmentedControl`` 在导航项上崩溃 Xcode

Posted

技术标签:

【中文标题】UISegmentedControl`` 在导航项上崩溃 Xcode【英文标题】:UISegmentedControl`` crash Xcode on Navigation Item 【发布时间】:2013-03-12 12:14:56 【问题描述】:

我正在尝试将UISegmentedControl 放在Navigation Item 上,但它使我的 xcode 崩溃。我只是在 Interface Builder 文件 (IB) 文件中添加了 UISegmentedControl,然后在 viewDisAppear 中添加了 viewDisAppear

.h

 IBOutlet UISegmentedControl *segmentedControl;

.m

 self.navigationItem.titleView=segmentedControl;

这只会让我的 xcode 因错误而崩溃

2013-03-12 17:38:56.343 Magazine[4728:1dc03] *** Assertion failure in -[UINavigationBar layoutSublayersOfLayer:], /SourceCache/UIKit_Sim/UIKit-2372/UIView.m:5776
2013-03-12 17:38:56.344 Magazine[4728:1dc03] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Auto Layout still required after executing -layoutSubviews. UINavigationBar's implementation of -layoutSubviews needs to call super.'
*** First throw call stack:
(0x2854012 0x1ee9e7e 0x2853e78 0x197ff35 0xe819ef 0x1efd6b0 0x7d1fc0 0x7c633c 0x7c6150 0x7440bc 0x745227 0x7458e2 0x281cafe 0x281ca3d 0x27fa7c2 0x27f9f44 0x27f9e1b 0x2d1c7e3 0x2d1c668 0xe3165c 0x2de5 0x2ce5)

libc++abi.dylib:终止调用抛出异常

为什么会出现这个错误

【问题讨论】:

您将分段控件放在 Interface Builder 的什么位置?不能直接在nib文件中做分段控制标题视图吗? 正常在视图上...但是如何让分段控制标题视图直接在nib文件中 你为什么要把Segment放在XIB中,然后也给出代码?相反,你可以通过代码分配初始化segmentedControl,然后尝试.. 从 IB 中删除分段控件并手动添加。 【参考方案1】:
UISegmentedControl * seg1 = [[UISegmentedControl alloc]
    initWithItems:[NSArray arrayWithObjects:@"von mir", @"alle", nil]];
[seg1 setSegmentedControlStyle:UISegmentedControlStyleBar];
self.navigationItem.titleView = seg1;

【讨论】:

以上是关于UISegmentedControl`` 在导航项上崩溃 Xcode的主要内容,如果未能解决你的问题,请参考以下文章

在 UISegmentedControl 上选择和取消选择段?

在 UIToolBar 中调整 UISegmentedControl 的大小,并针对不同的屏幕尺寸进行约束

如何在 iPad 的导航栏中调整自定义 UISegmentedControl 的大小?

iOS在导航栏上居中显示分段控件(UISegmentedControl)

UISegmentedControl 在视图控制器之间切换

使用 UISegmentedControl 进行多项选择 - Pages 使用的是啥?