今天主要来记录一下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中失败了,具体可以见花川