簡體   English   中英

Swift自定義工具欄實現

[英]Swift custom toolbar implementation

我正在嘗試實現自定義UIToolbar。 工具欄當前有5個按鈕:3更改頁面上的內容(保持與選擇切換項目相同的工具欄),另兩個按鈕設置為模態視圖控制器。

如何在幾個不同的“頁面”之間分割代碼/視圖?

我目前有一個名為ToolbarViewController的類,該類使用不同的項目實例化工具欄。 它具有一個通用操作,可將按鈕標題切換為“ ON”,並根據所點擊的按鈕執行不同的操作。 每個隨后需要該工具欄的VC都只是ToolbarViewController的子類,並且該工具欄是自動創建的,無需代碼復制。

通過這種方式進行設置,如果用戶位於tab1中並按下button1,則程序將崩潰,因為從tab1到tab1之間沒有設置。 我能夠解決此問題的一種方法是,在ToolbarViewController中使用一個初始化程序,該初始化程序會接收“ currentTab”,並且不允許該選項卡運行。 這似乎效率極低。

我一直在考慮的另一個解決方案是擁有一個帶有工具欄的VC。 通過按下按鈕,我將能夠更改該VC的“視圖”。 這也有一個問題,我無法在情節提要中設置AutoLayout,因為VC不會選擇任何內容,而只是更改視圖本身。 當我需要到處都是約束的一些復雜視圖時,這將成為一個問題。

我列出的兩種方法中的哪一種是可取的? 如果沒有,我應該采用哪種方法以及如何實施這些更改?

我認為您應該使用TabBar而不是工具欄,因為您可以實現很多相同的功能,而我相信您會更輕松地實現這些功能。

但是,如果您決定保留模態序列,則可以為每次工具欄按鈕按下設置動作。 給您的工具欄按鈕動作屬性。

在Swift中:

UIBarButtonItem(title: "YourTitle", style: UIBarButtonItemStyle.Plain, target: self, action: #selector(YourVC.yourMethod(_:)))

func yourMethod() {
   (code here)
}

至於AutoLayout的問題,應將一個空視圖放入ToolBarViewController中,然后使用筆尖創建自定義UIView子類。 設置您希望每個視圖在您的約束下查看筆尖的方式。 然后,在代碼中,將每個自定義UIView子類加載到ToolBarViewController的空視圖中。

祝好運!

暫無
暫無

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

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