亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

以編程方式創建segue

以編程方式創建segue

暮色呼如 2019-07-08 15:39:33
以編程方式創建segue我有個共同點UIViewController我所有的UIViewsControllers擴展到重用一些常見操作。我想在這個“公共”上建立一個UIViewController所以其他人UIViewControllers繼承。我正在努力弄清楚如何通過編程來實現這個目標。我想問題也可能是如何設置segue為了我UIViewControllers而不是走進故事板用手做的。
查看完整描述

3 回答

?
慕工程0101907

TA貢獻1887條經驗 獲得超5個贊

我想再增加一種可能性。您可以做的一件事是,您可以使用未附加到操作的segue連接故事板中的兩個場景,然后以編程方式在視圖控制器內觸發segue。您這樣做的方式,是您必須從文件的所有者圖標在故事板場景的底部,這是一個敏感的場景,并右拖動到目標場景。我再加一張圖片來解釋。

彈出窗口將顯示“手動段”。我選推作為類型。點擊小方塊,確保你在屬性檢查器中。給它一個標識符,您將使用它在代碼中引用它。

好的,接下來我將使用一個編程欄按鈕項目進行轉換。在viewDidLoad或其他地方,我將使用以下代碼在導航欄上創建一個按鈕項:

UIBarButtonItem *buttonizeButton = [[UIBarButtonItem alloc] initWithTitle:@"Buttonize"
                                         style:UIBarButtonItemStyleDone
                                target:self
  action:@selector(buttonizeButtonTap:)];self.navigationItem.rightBarButtonItems = @[buttonizeButton];

好的,注意選擇器是BuonizeButtonTap:。因此,為該按鈕編寫一個void方法,在該方法中,您將調用segue,如下所示:

-(void)buttonizeButtonTap:(id)sender{
    [self performSegueWithIdentifier:@"Associate" sender:sender];
    }

在調用preareForSegue時,需要發送方參數來標識按鈕。preareForSegue是一個框架方法,在這個方法中,您將實例化場景,并傳遞它執行其工作所需的任何值。下面是我的方法:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
    if ([[segue identifier] isEqualToString:@"Associate"])
    {
        TranslationQuizAssociateVC *translationQuizAssociateVC = [segue destinationViewController];
        translationQuizAssociateVC.nodeID = self.nodeID; //--pass nodeID from ViewNodeViewController
        translationQuizAssociateVC.contentID = self.contentID;
        translationQuizAssociateVC.index = self.index;
        translationQuizAssociateVC.content = self.content;
    }}

好吧,測試一下就行了。希望它能幫到你。


查看完整回答
反對 回復 2019-07-08
?
斯蒂芬大帝

TA貢獻1827條經驗 獲得超8個贊

我一直在使用這段代碼實例化我的自定義segue子類并以編程方式運行它。好像很管用。這個有什么問題嗎?我很困惑,閱讀了所有其他的答案,說這是做不到的。

UIViewController *toViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"OtherViewControllerId"];
MyCustomSegue *segue = [[MyCustomSegue alloc] initWithIdentifier:@"" source:self destination:toViewController];
[self prepareForSegue:segue sender:sender];[segue perform];


查看完整回答
反對 回復 2019-07-08
  • 3 回答
  • 0 關注
  • 600 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號