0%

[swift]Navigation Controller (2) 傳遞參數

如果要在換頁時讓PageA傳遞數值給PageB,並且在PageB顯示傳遞的參數時作法如下

  • 先在PageB的Controller新增一個Label,我們將用它來顯示PageA究竟傳了什麼過來```swift
    import UIKit
    class Page_B_ViewController: UIViewController {
    @IBOutlet weak var lblValue: UILabel! //顯示傳遞數值的Label
    var fromA_Value:String!;//儲存Page_A傳遞過來的數值
    override func viewDidLoad() {
      super.viewDidLoad();
      lblValue.text = fromA_Value;
    
    }
    }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35

* 接著在PageA Controller新增**prepareForSegue**事件 ```swift
import UIKit
class Page_A_ViewController: UIViewController {

override func viewDidLoad() {
super.viewDidLoad()
//NavBar
self.navigationController?.navigationBar.barTintColor = UIColor(red: 0.58, green: 0.761, blue: 0.231, alpha: 1)
let titleDic : NSDictionary = [NSForegroundColorAttributeName : UIColor.whiteColor()]; //字的顏色
self.navigationController?.navigationBar.titleTextAttributes = titleDic;
self.navigationController?.navigationBar.tintColor = UIColor.whiteColor() //按鈕的顏色
let barOptionIcon : UIBarButtonItem = UIBarButtonItem(image: UIImage(named: "icon-options"), style: UIBarButtonItemStyle.Plain, target: self, action: "PushToOptionController:");
self.navigationController?.navigationBar.topItem?.setRightBarButtonItem(barOptionIcon, animated: true) ;
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
//右上角Button按下時觸發的事件
func PushToOptionController(sender: UIBarButtonItem) {
self.performSegueWithIdentifier("toPageB", sender: self);
}
//準備跳轉頁面的設定
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if(segue.identifier == "toPageB"){
var page_b:Page_B_ViewController? = segue.destinationViewController as? Page_B_ViewController
if(page_b != nil){
page_b?.fromA_Value = "來自A的數值";
}
}
}
}

  • 完成!!!