前端之家收集整理的这篇文章主要介绍了
swift -NavigationController,代理传值,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
//
// ViewController.swift
// NavigationController
//
import UIKit
import Foundation
class ViewController: UIViewController,FontSizeChangDelegate {
var myLabel :UILabel?;//声明一个UILabel对象 全局的
override func viewDidLoad() {
super.viewDidLoad()
//self.title = "百度";
self.navigationItem.title = "百度";
let nextItem = UIBarButtonItem(title: "下一页",style: .Plain,target: self,action: "nextPage");
self.navigationItem.rightBarButtonItem = nextItem;
//放一个Label可以显示文字
let rect = CGRect(x: 0,y: 100,width: 320,height: 44);
myLabel = UILabel(frame: rect);
myLabel!.text = "欢迎来到百度";
self.view.addSubview(myLabel!);
// Do any additional setup after loading the view,typically from a nib.
}
func nextPage(){
NSLog("按钮被点击了");
let svc = SubViewController();
//设置这个协议
svc.delegate = self;
self.navigationController?.pushViewController(svc,animated: true);
}
// 代理方法
func fontSizeDidChange(controller: SubViewController,fontSize: Int) {
println("controller is\(controller) fontsize:\(fontSize)");
let font = UIFont.systemFontOfSize(Float(fontSize));//这里有错误
myLabel!.font = font;
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
//
// SubViewController.swift
// NavigationController
//
import UIKit
import Foundation
//定义一个协议
protocol FontSizeChangDelegate:NSObjectProtocol{
//定义的一个协议函数/代理的一个函数
//参数1 当前controller本身
//参数2 字体大小
func fontSizeDidChange(controller:SubViewController,fontSize:Int);
}
class SubViewController: UIViewController {
var fontSize:Int = 20;
//定义一个delegate对象
var delegate:FontSizeChangDelegate?;
override func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = UIColor .whiteColor();
self.title = "Page2";
//self.backgroundColor = UIColor .whiteColor();
// Do any additional setup after loading the view.
var btn = UIButton.buttonWithType(.System) as UIButton;
var frame = CGRect(x: 100,width: 100,height: 100);
btn.frame = frame;
btn.setTitle("增大字体大小",forState: .Normal);
btn.addTarget(self,action: "clickMe:",forControlEvents:.TouchUpInside);
self.view.addSubview(btn);
}
func clickMe(sender:UIButton){
//self.navigationController?.popToRootViewControllerAnimated(true);
fontSize++
println("fontsize is\(fontSize)");
if((delegate) != nil)
{
//调用里面的协议方法
delegate?.fontSizeDidChange(self,fontSize:fontSize);
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
/*
// MARK: - Navigation
// In a storyboard-based application,you will often want to do a little preparation before navigation
override func prepareForSegue(segue: UIStoryboardSegue,sender: AnyObject?) {
// Get the new view controller using segue.destinationViewController.
// Pass the selected object to the new view controller.
}
*/
}