簡體   English   中英

如何從嵌入在不同UINavigationControllers中的多個UIViewController轉到一個UIViewController

[英]How do I segue to one UIViewController from multiple UIViewControllers embedded in different UINavigationControllers

在我的舉重應用程序中,我有一個視圖控制器,我想用於幾個不同的目的。 一種是選擇將保存為用戶默認值的電梯類型。 另一種是選擇一種電梯類型,用於按電梯類型過濾用戶電梯的日志。

其中一個路徑(選擇默認值)從“設置”屏幕開始。 當您點擊UITableViewCell轉到選擇提升屏幕時,視圖會按預期從右向左滑動, 但是 ,它會立即從右向左再次滑動視圖,導航欄將指向其自身:

在此輸入圖像描述

這是我的故事板布局:

在此輸入圖像描述

這是相關的segue代碼:

// MARK: - Segues

  override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        if segue.identifier == "goToLifts" {
            let vc = segue.destinationViewController as! LiftSelectionTableViewController
            vc.delegate = self
        } else {
            return
        }
    }

  override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath:NSIndexPath) {
    switch indexPath.row {
    case 0: performSegueWithIdentifier("goToFormulas", sender: self)
    break
    case 1: performSegueWithIdentifier("goToLifts", sender: self)
    break
    default:
      break

    }
  }

我正在使用Swift 2.3和Xcode 8。

我已經閱讀了Apple的文檔,並在SO上發現了幾個涉及多個vc進入一個vc的主題,但他們要么處理傳遞數據問題或其他事情。

任何人都可以告訴我為什么會發生這種情況以及如何解決這個問題?

更新

做了@vacaWama建議的更改,現在它從底部顯示,沒有導航欄:

在此輸入圖像描述

更新2:

.storyboard源代碼超出了限制所以這里是GitHub上的鏈接:

鏈接到故事板文件

我懷疑你從原型單元連接你的segue,所以當你選擇單元格時會觸發它,第二次調用performSegueWithIdentifier時會觸發它。 如果要以編程方式調用segue,請從tableViewController頂部的viewController圖標中進行連接。

@vacawama,你懷疑是正確的。 視圖現在以模態呈現,沒有導航欄(請參閱我編輯的問題)。 在“設置”屏幕中,我希望它從右向左滑動,但是從日志屏幕我希望它從底部以模態方式呈現。 我嘗試將segue連接到它嵌入的導航控制器,但這並沒有什么區別。 你知道我怎么解決這個問題嗎?

您需要在故事板中選擇segue箭頭,然后在Attributes Inspector中將segue的類型更改為Show

如果我直接使用Show segue Select a lift type ,它會從右向左推動。 如果我使用Show segue到Navigation controller ,它會以模態方式呈現。 重新連接你的segue並確保它直接進入viewController而不是Navigation controller

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM