Im в очень глубоком рассоле. Я понимаю, что есть хорошая информация о моей ошибке, и я прошел через 3-4 страницы результатов поиска Google по этим ответам и пробовал все решения. Никто не работал.Ошибка Segue: ViewController не имеет идентификатора
Что Iv пробовал:
- Сброс Simulator Настройки
- Вычищают Xcode сборочные файлы
- Rename раскадровки
- Проверьте, чтобы увидеть, если Segue идентифицированный не написано неправильно (в сотни раз)
- Перезапустить и перестроить проект xCode
- Убедитесь, что segue на самом деле связан с ViewController в erro р.
Проблема: Iv сделал переход от ViewProjectViewController к RecordModule. Затем я программным образом добавила кнопку панели в NavBar ViewProjectViewController, так как эта панель Nav сделана программно из предыдущего VC.
Тогда, как вы можете, для «item3». Это кнопка, которую я нажимаю для запуска функции с помощью функции performSegueWithIdentifier. Но когда я нажимаю его, я получаю эту ошибку:
2016-04-29 12:54:59.098 music[9298:1272742] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Receiver (<music.ViewProjectViewController: 0x7bead670>) has no segue with identifier 'recMod''
*** First throw call stack:
(
0 CoreFoundation 0x00ac3494 __exceptionPreprocess + 180
1 libobjc.A.dylib 0x02e9be02 objc_exception_throw + 50
2 UIKit 0x01b4971c -[UIViewController shouldPerformSegueWithIdentifier:sender:] + 0
3 music 0x00089ad8 _TFC5music25ViewProjectViewController13openRecModulefPs9AnyObject_T_ + 168
4 music 0x00089b4a _TToFC5music25ViewProjectViewController13openRecModulefPs9AnyObject_T_ + 58
5 libobjc.A.dylib 0x02eb00b5 -[NSObject performSelector:withObject:withObject:] + 84
6 UIKit 0x01977e38 -[UIApplication sendAction:to:from:forEvent:] + 118
7 UIKit 0x01e079da -[UIBarButtonItem(UIInternal) _sendAction:withEvent:] + 179
8 libobjc.A.dylib 0x02eb00b5 -[NSObject performSelector:withObject:withObject:] + 84
9 UIKit 0x01977e38 -[UIApplication sendAction:to:from:forEvent:] + 118
10 UIKit 0x01977db7 -[UIApplication sendAction:toTarget:fromSender:forEvent:] + 64
11 UIKit 0x01b1bf3b -[UIControl sendAction:to:forEvent:] + 79
12 UIKit 0x01b1c2d4 -[UIControl _sendActionsForEvents:withEvent:] + 433
13 UIKit 0x01b1c483 -[UIControl _sendActionsForEvents:withEvent:] + 864
14 UIKit 0x01b1b2c1 -[UIControl touchesEnded:withEvent:] + 714
15 UIKit 0x019f852e -[UIWindow _sendTouchesForEvent:] + 1095
16 UIKit 0x019f95cc -[UIWindow sendEvent:] + 1159
17 UIKit 0x0199abe8 -[UIApplication sendEvent:] + 266
18 UIKit 0x0196f769 _UIApplicationHandleEventQueue + 7795
19 CoreFoundation 0x009d5e5f __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 15
20 CoreFoundation 0x009cbaeb __CFRunLoopDoSources0 + 523
21 CoreFoundation 0x009caf08 __CFRunLoopRun + 1032
22 CoreFoundation 0x009ca846 CFRunLoopRunSpecific + 470
23 CoreFoundation 0x009ca65b CFRunLoopRunInMode + 123
24 GraphicsServices 0x05d4e664 GSEventRunModal + 192
25 GraphicsServices 0x05d4e4a1 GSEventRun + 104
26 UIKit 0x01975eb9 UIApplicationMain + 160
27 music 0x000a7391 main + 145
28 libdyld.dylib 0x040a1a25 start + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException
Heres мой код (ViewController - начальная точка Segue)
class ViewProjectViewController: UITableViewController {
var selectedProj: Array<String> = []
var selectedKey: String = ""
var listItemsTwo = [ListItemTwo]()
let shareDataTwo = SharedDataTwo.sharedInstance
override func viewDidLoad() {
super.viewDidLoad()
// Setup Left UIBarButton Here
self.navigationItem.leftBarButtonItem = UIBarButtonItem(image: UIImage(named: "BackBtn"), style: .Plain, target: self, action: #selector(ViewProjectViewController.backButtonPressed(_:)))
// Setup Right UIBarButton Here
var items : Array<UIBarButtonItem> = []
let item1 = UIBarButtonItem(image: UIImage(named: "SaveBtn"),style: UIBarButtonItemStyle.Plain, target: self, action: #selector(ViewProjectViewController.saveChanges))
let item2 = UIBarButtonItem(image: UIImage(named: "EditBtn"), style: .Plain, target: self, action: #selector(ViewProjectViewController.editProject))
// SEGUE BUTTON NOT WORKING //////////////////////
let item3 = UIBarButtonItem(title: "Record", style: .Plain, target: self, action: #selector(ViewProjectViewController.openRecModule))
item3.tintColor = UIColor.redColor()
items.append(item1)
items.append(item2)
items.append(item3)
self.navigationItem.setRightBarButtonItems(items, animated: true)
item1.setTitleTextAttributes([
NSFontAttributeName: UIFont(name: "Aldrich", size: 12.0)!],
forState: UIControlState.Normal)
Херес Segue код (ViewProjectViewController)
func openRecModule(sender: AnyObject) {
self.performSegueWithIdentifier("recMod", sender: nil)
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if let destinationVC = segue.destinationViewController as? RecordModule {
destinationVC.transitioningDelegate = self
}
}
Интерфейс Builder Изображение - http://i.imgur.com/klbwdrm.png
Как ViewProjectViewController Появившись на экране
MainPanelViewController направляет пользователя к ViewProjectViewController.
MainPanelViewController является UIViewController с UITableView Embeded внутри. Код для UITableViewCell ниже (который также является переход к ViewProjectViewControlle г)
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let keys = Array(sharedDataThree.c.keys)
let object = self.sharedDataThree.c[keys[indexPath.row]]
let newProgramVar = object as! NSArray
let destinationVC = ViewProjectViewController()
destinationVC.selectedProj = newProgramVar as! Array<String>
destinationVC.selectedKey = keys[indexPath.row]
//performSegueWithIdentifier("viewProject", sender: self)
var alreadyPushed = false
if let vc = self.navigationController?.viewControllers {
for viewController in vc {
if let viewController = viewController as? ViewProjectViewController {
self.navigationController?.popToViewController(viewController, animated: true)
print("Push your controller")
alreadyPushed = true
break
}
}
}
if alreadyPushed == false {
self.navigationController?.pushViewController(destinationVC, animated: true)
}
Открыть раскадровка файл в обычном текстовом редакторе и искать «recMod» - убедитесь, что он выглядит так, как вы думаете, он должен (вложен в нужном месте). Если вы не можете понять это, я думаю, вы можете бросить его в суть и связать его здесь. –
Также, как вы получили ViewProjectViewController на экране? Вы перешли к нему? Вы загрузили его из раскадровки, верно? –
Я помню, что такая странная проблема. Вы пробовали «Чистое создание папки»? Команда + Option + Shift + K сделает это. – James