今天主要来记录一下popover的使用
主视图里添加进两个将 view变成navigation controller 随后拖入bar button item 和 label
随后在创建一个view 继承自 uitableviewcontroller 在cocoa touch类中 名为popTableViewController
以下便是具体的代码 解释也在其中,回调方法是在点击一个按钮后,其选中的漫画会显示在label 中,是一个函数类型的数据
// // popTableViewController.swift // 试验39 // // Created by HISE_CS on 15/10/16. // Copyright © 2015年 HISE_CS. All rights reserved. // import UIKit class popTableViewController: UITableViewController { //创建table的数据 用lazy标记 表明在用到的时候才会初始化 lazy var items:[String] = ["cai","osjo","cosdijo"] //添加一个取消按钮 var cancelBarButtonItem:UIBarButtonItem! //执行回调方法 var selectHandler:((Selectoritem:String) -> Void)? override func viewDidLoad() { //用纯代码创建cell时,下面这句话很重要,要创建cell的标识 tableView.registerClass(UITableViewCell.classForCoder(), forHeaderFooterViewReuseIdentifier: "Cell") //设置取消按钮的属性 cancelBarButtonItem = UIBarButtonItem(title: "取消", style: UIBarButtonItemStyle.Plain, target: self, action: "performCell") super.viewDidLoad() } //实例化performCell,取消视图 func performCell() { dismissViewControllerAnimated(true, completion: nil) } //使用tableview必须重写的两个方法 //设置tableview的行数 override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } // MARK: - Table view data source //使用tableview必须重写的两个方法 //设置tableview的行数 //设置cell属性 override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { //使用上述的cell标识 let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as UITableViewCell cell.textLabel!.text = items[indexPath.row] return cell } //点击tableview某一行所执行的代码 override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { let selectItem = items[indexPath.row] selectHandler?(Selectoritem: selectItem) dismissViewControllerAnimated(true, completion: nil) } override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { // #warning Incomplete implementation, return the number of rows return items.count } }上面这一行是设置行数
下面就是在viewController中设置popovercontroller
先是设置tableviewcontroller 再是设置他的navigationcontroller 最后实在其上设置popovercontroller
// // ViewController.swift // 试验39 // // Created by HISE_CS on 15/10/13. // Copyright © 2015年 HISE_CS. All rights reserved. // import UIKit class ViewController: UIViewController { @IBOutlet var manHua: UILabel! //浮现视图的navigation控制器的实现 lazy var popOverContentController:UINavigationController = { //用来浮动窗口的实现 因为创建了一个tableviewcontroller 所以与之关连 //名为popTableViewController let controller = popTableViewController(style:.Plain) //设置回调方法 controller.selectHandler = self.selectHandler let navigationController = UINavigationController(rootViewController: controller) return navigationController }()
//这句才是关键 //创建一个popover控制器 lazy var popOverController: UIPopoverController = { //接受一个navigation控制器 return UIPopoverController(contentViewController: self.popOverContentController) }() override func viewDidLoad() { //卡通图像的圆角设置 super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } func selectHandler(selectedItem:String){ manHua.text = "xuanzhong\(selectedItem)" } @IBAction func shiJian(sender: UIBarButtonItem) { popOverController.presentPopoverFromBarButtonItem(sender, permittedArrowDirections: UIPopoverArrowDirection.Any, animated: true) } }不过好像在Ios9中失败了,具体可以见花川