2015-11-05 40 views
0

我正在使用一个4 UIButton调出相同的UIPickerView但不同的NSArray(4)出现每个按钮。使用一个4 bool来让UIPickerView决定要加载哪个,以及哪个要抓取哪个row's text。按钮方法只包含四个bool属性,它们将三个设置为false,并将正确的一个(按钮分接)设置为true。然后调用UIViewAnimateWithDuration调出UIPickerView(打印在UIView - UIPickerViewUIToolbar一起工作)。除了一个(即使按第一个中间最后的任何顺序),所有按钮都可以正常工作(无论我带多少次关闭UIPickerView)。 Xcode中抛出以下异常:copywithzone例外对象不包括在当前类

我所做的:

  • 删除按钮,创建一个新的
  • 尝试使用addtarget创建按钮
  • 添加方法按钮的两个情节提要/控制器的方法
  • 与方法链接按钮使用故事板

所以我问什么荷兰国际集团如果任何人都可以看到什么,我不能在我的调试器的例外看到抛出:(sportCenter是NSObject,它是不是在这个控制器进口-tried太!)

2015-11-05 13:14:36.356 -----[3975:1397857] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[sportCenter copyWithZone:]: unrecognized selector sent to instance 0x7f8709f62250' 
*** First throw call stack: 
(
    0 CoreFoundation      0x0000000103673f45 __exceptionPreprocess + 165 
    1 libobjc.A.dylib      0x00000001030eddeb objc_exception_throw + 48 
    2 CoreFoundation      0x000000010367c56d -[NSObject(NSObject) doesNotRecognizeSelector:] + 205 
    3 CoreFoundation      0x00000001035c9eea ___forwarding___ + 970 
    4 CoreFoundation      0x00000001035c9a98 _CF_forwarding_prep_0 + 120 
    5 UIKit        0x0000000103c8954b -[UILabel _setText:] + 114 
    6 UIKit        0x0000000103a0580c -[UIPickerView tableView:cellForRowAtIndexPath:] + 863 
    7 UIKit        0x000000010429c146 -[UIPickerColumnView tableView:cellForRowAtIndexPath:] + 103 
    8 UIKit        0x0000000103b75e2a -[UITableView _createPreparedCellForGlobalRow:withIndexPath:willDisplay:] + 782 
    9 UIKit        0x0000000103b75f3f -[UITableView _createPreparedCellForGlobalRow:willDisplay:] + 74 
    10 UIKit        0x0000000103b4b307 -[UITableView _updateVisibleCellsNow:isRecursive:] + 3187 
    11 UIKit        0x0000000103b5d369 -[UITableView cellForRowAtIndexPath:] + 186 
    12 UIKit        0x000000010412419a -[UIPickerTableView selectRow:animated:notify:] + 342 
    13 UIKit        0x0000000103a0421f -[UIPickerView _resetSelectionOfTables] + 157 
    14 UIKit        0x0000000103a040ab __30-[UIPickerView layoutSubviews]_block_invoke + 9523 
    15 UIKit        0x0000000103ac9c10 +[UIView(Animation) performWithoutAnimation:] + 65 
    16 UIKit        0x0000000103a01b33 -[UIPickerView layoutSubviews] + 147 
    17 UIKit        0x0000000103a04fcb -[UIPickerView selectedRowInComponent:] + 45 
    18 UIKit        0x0000000103a0009e -[UIPickerView _updateSelectedRows] + 135 
    19 UIKit        0x0000000103a001cf -[UIPickerView didMoveToWindow] + 117 
    20 UIKit        0x0000000103acebe0 -[UIView(Internal) _didMoveFromWindow:toWindow:] + 1768 
    21 UIKit        0x0000000103ace856 -[UIView(Internal) _didMoveFromWindow:toWindow:] + 862 
    22 UIKit        0x0000000103ac3e2c __45-[UIView(Hierarchy) _postMovedFromSuperview:]_block_invoke + 155 
    23 Foundation       0x0000000102cc3d4a -[NSISEngine withBehaviors:performModifications:] + 155 
    24 UIKit        0x0000000103ac3d4a -[UIView(Hierarchy) _postMovedFromSuperview:] + 575 
    25 UIKit        0x0000000103ad17e7 -[UIView(Internal) _addSubview:positioned:relativeTo:] + 1967 
    26 ---      0x00000001026cbe7b -[AllOngoingViewController animatePickerView] + 107 
    27 ---      0x00000001026cbcd7 -[AllOngoingViewController centersAreTapped] + 71 
    28 UIKit        0x0000000103f0194f _UIGestureRecognizerSendTargetActions + 153 
    29 UIKit        0x0000000103efdfc1 _UIGestureRecognizerSendActions + 162 
    30 UIKit        0x0000000103efbfbe -[UIGestureRecognizer _updateGestureWithEvent:buttonEvent:] + 843 
    31 UIKit        0x0000000103f04283 ___UIGestureRecognizerUpdate_block_invoke898 + 79 
    32 UIKit        0x0000000103f04121 _UIGestureRecognizerRemoveObjectsFromArrayAndApplyBlocks + 342 
    33 UIKit        0x0000000103ef1bdd _UIGestureRecognizerUpdate + 2634 
    34 UIKit        0x0000000103a8f9c0 -[UIWindow _sendGesturesForEvent:] + 1137 
    35 UIKit        0x0000000103a90bf6 -[UIWindow sendEvent:] + 849 
    36 UIKit        0x0000000103a402fa -[UIApplication sendEvent:] + 263 
    37 UIKit        0x0000000103a1aabf _UIApplicationHandleEventQueue + 6844 
    38 CoreFoundation      0x00000001035a0011 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17 
    39 CoreFoundation      0x0000000103595f3c __CFRunLoopDoSources0 + 556 
    40 CoreFoundation      0x00000001035953f3 __CFRunLoopRun + 867 
    41 CoreFoundation      0x0000000103594e08 CFRunLoopRunSpecific + 488 
    42 GraphicsServices     0x0000000106616ad2 GSEventRunModal + 161 
    43 UIKit        0x0000000103a2030d UIApplicationMain + 171 
    44 -----      0x00000001026c1caf main + 111 
    45 libdyld.dylib      0x000000010a19e92d start + 1 
) 
libc++abi.dylib: terminating with uncaught exception of type NSException 

回答

1

您必须添加自己的copyWithZone:方法在你的对象...

但是,我不真的了解你的问题/背景。它看起来设计有点复杂。布尔阵列有可能是一个坏方法。最好在控制器中有一个selectedButton(UIButton)属性,以知道选择了哪一个属性,而不是维护四个布尔值。

最后,不管情况如何,如果事情对所有对象都有效,除第一个对象之外,通常意味着你在某个地方有数组索引错误。

我希望它有帮助。

+0

它绝对不是数组,我通过断点来检查它。该数组在调用pickerview之前被填充。错误出现在[self.view addsubview:PickersUIVIEW]而不是UIPickerView。但所有其他按钮都通过相同的方法,一切都很好 – cmario

+0

对不起,但你是正确的。忘了将数组过滤为仅使用每个对象的一个​​属性并仅构建这些项目的新数组。谢谢 – cmario

+0

不客气:) – Moose