Thought I'd try my hand at iOS development since the Swift/ios8 announcement and I'm having trouble getting a basic tableView to build.
Currently getting the following error messages when loading the app in the simulator (Xcode says build completes):
2014-06-11 13:40:56.173 firstapp[2217:85843] -[UIViewController tableView:numberOfRowsInSection:]: unrecognized selector sent to instance 0xb20fcf0
2014-06-11 13:40:56.180 firstapp[2217:85843] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIViewController tableView:numberOfRowsInSection:]: unrecognized selector sent to instance 0xb20fcf0'
*** First throw call stack:
(
0 CoreFoundation 0x00452916 __exceptionPreprocess + 182
1 libobjc.A.dylib 0x01da28d9 objc_exception_throw + 44
2 CoreFoundation 0x004596f5 -[NSObject(NSObject) doesNotRecognizeSelector:] + 277
3 CoreFoundation 0x003a4857 ___forwarding___ + 1047
4 CoreFoundation 0x003a441e _CF_forwarding_prep_0 + 14
5 UIKit 0x00f149aa -[UISectionRowData refreshWithSection:tableView:tableViewRowData:] + 2767
6 UIKit 0x00f18ebc -[UITableViewRowData numberOfRows] + 98
7 UIKit 0x00d57bb0 -[UITableView noteNumberOfRowsChanged] + 133
8 UIKit 0x00d57442 -[UITableView reloadData] + 1055
9 UIKit 0x00d5b54d -[UITableView _reloadDataIfNeeded] + 78
10 UIKit 0x00d60ed5 -[UITableView layoutSubviews] + 36
11 UIKit 0x00cd9223 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 601
12 libobjc.A.dylib 0x01db5763 -[NSObject performSelector:withObject:] + 70
13 QuartzCore 0x04441b87 -[CALayer layoutSublayers] + 152
14 QuartzCore 0x044359e9 _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 397
15 QuartzCore 0x04441ace -[CALayer layoutIfNeeded] + 160
16 UIKit 0x00db72e3 -[UIViewController window:setupWithInterfaceOrientation:] + 309
17 UIKit 0x00ca5a80 -[UIWindow _rotateToBounds:withAnimator:transitionContext:] + 667
18 UIKit 0x00ca8388 -[UIWindow _rotateWindowToOrientation:updateStatusBar:duration:skipCallbacks:] + 2151
19 UIKit 0x00caa074 -[UIWindow _setRotatableClient:toOrientation:applyTransformToWindow:updateStatusBar:duration:force:isRotating:] + 6723
20 UIKit 0x00ca785d -[UIWindow _setRotatableClient:toOrientation:updateStatusBar:duration:force:isRotating:] + 128
21 UIKit 0x00ca77d6 -[UIWindow _setRotatableClient:toOrientation:updateStatusBar:duration:force:] + 84
22 UIKit 0x00ca769e -[UIWindow _setRotatableViewOrientation:updateStatusBar:duration:force:] + 115
23 UIKit 0x00ca7729 -[UIWindow _setRotatableViewOrientation:duration:force:] + 68
24 UIKit 0x00ca66b6 __57-[UIWindow _updateToInterfaceOrientation:duration:force:]_block_invoke + 120
25 UIKit 0x00ca6624 -[UIWindow _updateToInterfaceOrientation:duration:force:] + 406
26 UIKit 0x00ca7445 -[UIWindow setAutorotates:forceUpdateInterfaceOrientation:] + 905
27 UIKit 0x00cacb1f -[UIWindow setDelegate:] + 479
28 UIKit 0x00da4177 -[UIViewController _tryBecomeRootViewControllerInWindow:] + 184
29 UIKit 0x00c9f69a -[UIWindow addRootViewControllerViewIfPossible] + 683
30 UIKit 0x00c9f85c -[UIWindow _setHidden:forced:] + 313
31 UIKit 0x00c9fad9 -[UIWindow _orderFrontWithoutMakingKey] + 49
32 UIKit 0x00cae47b -[UIWindow makeKeyAndVisible] + 80
33 UIKit 0x00c4fa50 -[UIApplication _callInitializationDelegatesForMainScene:transitionContext:] + 3228
34 UIKit 0x00c528a3 -[UIApplication _runWithMainScene:transitionContext:completion:] + 1507
35 UIKit 0x00c6c335 __84-[UIApplication _handleApplicationActivationWithScene:transitionContext:completion:]_block_invoke + 59
36 UIKit 0x00c515e3 -[UIApplication workspaceDidEndTransaction:] + 29
37 FrontBoardServices 0x033f42af -[FBSWorkspace clientEndTransaction:] + 87
38 FrontBoardServices 0x033fb71d __53-[FBSWorkspaceClient _queue_handleTransactionBookEnd]_block_invoke + 49
39 CoreFoundation 0x003772f0 __CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__ + 16
40 CoreFoundation 0x0036ba83 __CFRunLoopDoBlocks + 195
41 CoreFoundation 0x0036b1e8 __CFRunLoopRun + 936
42 CoreFoundation 0x0036ab7b CFRunLoopRunSpecific + 443
43 CoreFoundation 0x0036a9ab CFRunLoopRunInMode + 123
44 UIKit 0x00c50efa -[UIApplication _run] + 571
45 UIKit 0x00c54dee UIApplicationMain + 3727
46 firstapp 0x00005011 top_level_code + 97
47 firstapp 0x0000504b main + 43
48 libdyld.dylib 0x022beac5 start + 1
49 ??? 0x00000001 0x0 + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException
(lldb)
I've tried following the stack trace to the method supposedly causing the issue, but can't find anything out of the ordinary (currently following a tutorial). I've also included my ViewController.swift:
import UIKit
class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func tableView(tableView: UITableView!, numberOfRowsInSection section: Int) -> Int {
return 10
}
func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! {
let cell: UITableViewCell = UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: "MyTestCell")
cell.text = "Row #\(indexPath.row)"
cell.detailTextLabel.text = "Subtitle #\(indexPath.row)"
return cell
}
}
EDIT: Including source for Main.storyboard:
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="6154.17" systemVersion="13D65" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" initialViewController="CLE-J8-Gwc">
<dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="6153.11"/>
</dependencies>
<scenes>
<!--View Controller-->
<scene sceneID="53f-Xy-Vbi">
<objects>
<viewController id="CLE-J8-Gwc" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="uoO-21-5Iu">
<rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="22" sectionFooterHeight="22" id="Kl0-es-OXb">
<rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<connections>
<outlet property="dataSource" destination="CLE-J8-Gwc" id="HG5-Ye-UOQ"/>
<outlet property="delegate" destination="CLE-J8-Gwc" id="I76-0E-fPy"/>
</connections>
</tableView>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
</view>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="yaa-zI-5Eu" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="110.66666666666666" y="562.08333333333337"/>
</scene>
</scenes>
<simulatedMetricsContainer key="defaultSimulatedMetrics">
<simulatedStatusBarMetrics key="statusBar"/>
<simulatedOrientationMetrics key="orientation"/>
<simulatedScreenMetrics key="destination" type="retina4"/>
</simulatedMetricsContainer> </document>
I've checked tons of questions regarding the same error and can't seem to find anything swift-specific or anything that solves my current issue.
Thanks!
I had this exact same error while trying to do the exact same thing - overriding the methods from UITableViewDataSource and UITableViewDelegate in my UIViewController.
In my case, the dataSource
and delegate
outlets of my UITableView were pointing to a UIView, instead of the UIViewController which was surrounding it.
I fixed this by ctrl clicking my Table View, and dragging + dropping the aforementioned properties onto the UIViewController.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With