您的位置:首页 > 移动开发 > IOS开发

Ios学习之popover的使用

2015-10-16 13:23 423 查看
今天主要来记录一下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中失败了,具体可以见花川
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: