Ios学习之popover的使用

今天主要来记录一下popover的使用

主视图里添加进两个将 view变成navigation controller 随后拖入bar button item 和 label

Ios学习之popover的使用_第1张图片

随后在创建一个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中失败了,具体可以见花川






你可能感兴趣的:(Ios学习之popover的使用)