2015-07-06 73 views
2

我第一次遇到這個問題。我檢查了堆棧溢出的類似問題,但沒有解決方案可以解決我的問題,所以我有這個帖子。到目前爲止,我有兩個視圖controllers(比方說A和B),我試圖用名稱爲「toB」的segue連接它們。當我運行該程序時,Xcode告訴我Receiver(B) has no segue with identifier "toB"接收器沒有標識符爲「***」的segue

我非常確定在storyboard和代碼中identifier的拼寫完全相同。並且賽格線連接了A view controllerB view controller

但是storyboard這兩個視圖的ID號controllers是不同的。這是問題嗎?

希望有人能幫助我。提前致謝!


SOLUTION

感謝@Amit Shelgaonkar的暗示!在我的情況下,將performSegueWithIdentifier移動到viewDidAppear仍然不起作用,但將其移動到applicationWillEnterForeground可解決問題!

我仍然不知道爲什麼它不起作用,因爲當我試圖開發測試應用程序,並把performSegueWithIdentifierviewDidAppear,它完美的作品。

+0

你可以張貼一些代碼,例如你在哪裏調用'performSegueWithIdentifier:'? – Glorfindel

+0

添加故事板圖片以查看兩個視圖控制器是如何連接的。 –

+0

@KathiravanG我沒有足夠的聲望發佈圖片...這裏是鏈接,抱歉讓您遠離堆棧溢出![link](https://drive.google.com/file/d/0BzuHHdjzRAbdVGxjSjAzZHRjTDA/視圖?usp = sharing) –

回答

1

您在viewDidLoad中致電performSegueWithIdentifier:sender:。你不能解僱還沒有出現的UIViewControllerviewDidLoad具有純粹的內存管理功能,你可以使用它作爲(的一部分)構造函數。有什麼可行的,是在viewDidAppear開始segue,但是我建議先從你想要的視角開始。

+0

// @ Jenny Cheung如果您覺得有用,請接受我的回答。 –

+0

我試着將'performSegueWithIdentifier:sender'移動到'viewDidAppear',但仍然不起作用。你能否給我更多的幫助? –

1

檢查內容:
1.在A和B之間,塞格的名字。
2.代碼應該如下所示:[self performSegueWithIdentifier:@"toB" sender:self];
3.檢查您的B視圖是否具有自定義類。
4.嘗試清潔項目並再次運行。

+0

全部都被檢查!仍然沒有工作... –

+0

你是什麼類型的segue? – Stefan

+0

我在故事板中的第一個視圖控制器的'viewDidLoad'中調用了'performSegueWithIdentifier',這是一個問題嗎? –

0

有點老,但希望這有助於我有同樣的問題。經過這裏的所有建議,問題變成了我的接受視圖,在該視圖的類聲明中,我將它設置爲ViewController而不是UIViewController。

例如我有這個原本是錯誤的

class viewB: ViewController{ 

,這是正確的

class viewB: UIViewController{ 
相關問題