셀이 segue 함수 준비에 연결되어 있으며이 방법이 작동하는 UITableView VC가 있습니다. 올바른 VC로 이동합니다. performForSegue를 호출하는 메서드에 연결된 탐색 항목에 rightBarButtonItem을 추가하고 올바른 식별자를 지정했습니다. 오른쪽 버튼을 클릭하기 전까지는 모두 잘 돌아갑니다. 내가 얻을 때 : "첫 번째 호출 스택을 던져. 유형 NSException의 잡히지 않은 예외로 종료"누군가 날 도와주고 제발 올바른 방향으로 나를 가리켜 주시겠습니까? 코드 및 인쇄 목록은 다음과 같습니다. 고맙습니다.segue를 수행하려고 시도하면 "NSException 유형의 catch되지 않는 예외로 종료"로 연결됩니다.
2017-03-26 21:50:28.041 PDCiPad[10433:292572] -[PDCiPad.AssignNumberOfRoomsForFloorsVC navigateToNextViewController]: unrecognized selector sent to instance 0x7ff5b7c326c0
2017년 3월 26일 21 : 50 : 28.219 PDCiPad [10,433 : 292572] * 종료 애플리케이션에 의한 캐치되지
class AssignNumberOfRoomsForFloorsVC: UITableViewController {
//MARK: - Properties
private var managedObjectContext: NSManagedObjectContext!
private var storedFloors = [Floors]()
//MARK: - Actions
override func viewDidLoad() {
super.viewDidLoad()
managedObjectContext = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
loadFloorData()
self.tableView.reloadData()
self.navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.done, target: self, action: Selector(("navigateToNextViewController")))
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
private func loadFloorData() {
let request: NSFetchRequest<Floors> = Floors.fetchRequest()
request.returnsObjectsAsFaults = false
do {
storedFloors = try managedObjectContext.fetch(request)
}
catch {
print("could not load data from core \(error.localizedDescription)")
}
}
private func navigateToNextViewController(){
self.performSegue(withIdentifier: "room and alarm type", sender: self)
}
// MARK: - Table view data source
override func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return storedFloors.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "floor cell", for: indexPath) as! FloorCell
let floorItem = storedFloors[indexPath.row]
cell.floorNumberTxt.text = String(floorItem.floorNumber)
return cell
}
// MARK: - Navigation
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
var selectedRow = self.tableView.indexPathForSelectedRow
let floorItem = storedFloors[(selectedRow?.row)!]
let destinationController = segue.destination
if let assignRoomsVC = destinationController as? DeclareRoomsVC {
if let identifier = segue.identifier {
switch identifier {
case "assign number of rooms":
let _ = assignRoomsVC.view
assignRoomsVC.floorNumberTxt.text = String(floorItem.floorNumber)
assignRoomsVC.selectedFloor = floorItem.floorNumber
default: break
}
}
}
}
}
이 콘솔의 메시지 인 예외 'NSInvalidArgumentException', 이유 : '- [PDCiPad.AssignNumberOfRoomsForFloorsVC navigateToNextViewController] : 인스턴스로 전송 된 인식 할 수없는 선택기 0x7ff5b7c326c0' * 첫 번째 호출 스택 스택 : 23,516,0 CoreFoundation에서의 0x000000010db79d4b exceptionPreprocess + 171 1 libobjc.A.dylib 0x000000010d1ba21e objc_exception_throw + 48 0x000000010dbe9f04 CoreFoundation에서 2 - [NSObject의 (NSObject의) doesNotRecognizeSelector :] + 132 3 CoreFoundation에서 0x000000010daff005 ___forwarding_ + 1,013 4 CoreFoundation에서 0x000000010dafeb88 _CF_forwarding_prep_0 + 120 5 UIKit 0x000000010e6b28bc - [UIApplication sendAction : from : forEvent :] + 83 6 UIKit 0x000000010eaf44a1 - [UIBarButtonItem (UIInternal) _sendAction : withEvent :] + 149 7 UIKit 0x000000010e6b28bc - [UIApplication sendAction : 대상 : fromEvent :] + 83 8 UIKit 0x00 0000010e838c38 - [UIControl 액션 (SendAction) : 다음과 forEvent :] + 67 9 UIKit 0x000000010e838f51 - [UIControl _sendActionsForEvents : withEvent :] + 444 10 UIKit의 0x000000010e8390db - [UIControl _sendActionsForEvents : withEvent :] + 838 11 UIKit의 0x000000010e837e4d - [UIControl touchesEnded : withEvent :] + 668 12 UIKit 0x000000010e720545 - [UIWindow _sendTouchesForEvent :] + 2,747 13 UIKit 0x000000010e721c33 - [UIWindow sendEvent :] + 4011 14 UIKit의 0x000000010e6ce9ab - [UIApplication sendEvent :] + 371 15 UIKit 0x000000010eebb72d dispatchPreprocessedEventFromEventQueue + 3248 16 UIKit 0x000000010eeb4463 __handleEventQueue + 4879 17 CoreFo undation 0x000000010db1e761 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION + 17 18 CoreFoundation에서의 0x000000010db0398c __CFRunLoopDoSources0 + 556 19 CoreFoundation에서 0x000000010db02e76 __CFRunLoopRun + 918 20 CoreFoundation에서 0x000000010db02884 CFRunLoopRunSpecific + 420 21 GraphicsServices 0x0000000113908a6f GSEventRunModal + 161 22 UIKit 0x000000010e6b0c68 UIApplicationMain + 159 23 PDCiPad 0x000000010cad8c1f 메인 + 111 24 libdyld.dylib 0x0000000111a3268d start + 1 ) libC++ abi.dylib : 형 NSException의 캐치되지 않는 예외
이 질문은 속임수를 쓰는 좋은 표준이 필요합니다. – rmaddy
시간을내어 주셔서 감사합니다. 나는 네가 한 말을 끝내고 오류를 내 prepareForSegue로 옮겼다. 당신은 내 모습을보고 올바른 방향으로 나를 가리킬 수 있습니까? –
다른 예외입니다. 무슨 예외? 'indexPathForSelectedRow'는'nil' 가능성이 큽니다. 부주의하게 작성된 느낌표는 충돌 초대입니다. – vadian