2013-07-10 57 views
4

只是想知道發件人對象。performSegue:withSender:發件人對象

我知道你可以通過方法prepareForSegue...來訪問它,但在下一個destinationViewController中可以使用嗎?

即在viewDidLoad我可以訪問一個segueSender對象或東西嗎?

我還沒有見過這樣的文件我想這可能是有用的。

編輯CLARITY

我不要求如何執行賽格瑞或找到一個賽格瑞或像這樣的東西。

說我有兩個視圖控制器(VCA和VCB)。

有一個從一個VCA SEGUE與標識符 「SEGUE」 VCB。

在VCA我跑......

[self performSegueWithIdentifier:@"segue" sender:@"Hello world"]; 

我的問題是我可以從VCB訪問@「Hello World」的字符串,或者是隻在內部VCA的prepareForSegue...方法?

即我可以從目標控制器訪問SEGUE發件人對象?

+0

u可以使用用於從故事板 UIStoryboard * iPhoneStoryboard = [UIStoryboard storyboardWithName GET視圖控制器對象: @「MainStoryboard_iPhone」包:無]; ViewController * firstViewController = [iPhoneStoryboard instantiateViewControllerWithIdentifier:@「FirstViewController」]; –

+0

??你讀過這個問題了嗎? – Fogmeister

+0

你必須訪問目標視圖控制器在視圖中加載? –

回答

1

所以答案是「否」。

感謝您的幫助。

0

你隨時都可以從storbyoard一個SEGUE,並獲得sourceViewController。事情是這樣的:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"myStorboard" bundle:nil]; 
UIStoryboardSegue *mySegue = [storyboard instantiateViewControllerWithIdentifier:@"mySegue"]; 
[mySegue sourceViewController]; 

編輯: 評論打我給它。 ;)

+0

OK,但是在viewController的代碼中,我可以運行下面這行代碼......'[self performaSegueWithIdentifier:@「SomeIdentifier」sender:someObject];'。我的問題不是如何獲得賽格或如何執行賽格。我的問題很簡單,就是destinationViewController中的'someObject'。 – Fogmeister

+0

那麼,您可以在執行segue之前將senderobject設置爲destinationViewController(或源代碼)的屬性。爲了讓一個方法獲得一個segue的發送者,我認爲問題在於,一個標識符繼續執行,可能會執行多次,發送者不同,因此很難在destinationViewController中識別出正確的segue實例,因此很難找到合適的發件人。此外,看到這裏:http://stackoverflow.com/questions/14964487/get-sender-of-segue-in-destination-view-controller – Esso

0

如果你正試圖從一個視圖控制器傳遞對象到下一個你可能想要做這樣的事情:

在你父視圖控制器:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
    // Only if you have multiple segues. 
    if ([segue.identifier isEqualToString:@"NameOfYourSegue"]) { 
     // Cast necessary to access properties of the destination view controller. 
     [(YourChildViewController *)segue.destinationViewController setObject:theObjectToPass]; 
    } 
} 

您需要在故事板中給你的Segue一個名字,並聲明一個屬性,以便在目標視圖控制器中傳遞該對象。

+0

謝謝,是的,我知道這一點我只是不知道如果發件人對象可能在目標視圖控制器中可用。 – Fogmeister

1

是的,你可以。

老問題,但在回答中生病流行使用SWIFT

第一調用

performSegueWithIdentifier("<#your segue identifier #>", sender: <#your object you wish to access in next viewController #>) 

在prepareForSegue

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 

     let dest = segue.destinationViewController as! <# your destination vC#> 
     dest.<# sentThroughObject #> = sender 
    } 
} 

然後在vc你Segue公司有一個變種,將接受穿過物體

class NextViewController: UIViewController { 

    var <# sentThroughObject #> = AnyObject!() 

//cast <# sentThroughObject #> as! <#your object#> to use 
} 

UPDATE:SWIFT 3

performSegue(withIdentifier: "<#your segue identifier #>", sender: <#Object you wish to send to next VC#>) 


override func prepare(for segue: NSStoryboardSegue, sender: Any?) { 
     let destination = segue.destinationController as! <# cast to your destination VC#> 
     destination.sentViaSegueObject = sender as? <#your object#> 
    } 

在目的地VC有一個屬性接受發送對象

var sentViaSegueObject = <#your object#>? 
相關問題