Ban đầu tôi muốn thêm một UIPickerView ẩn vào Main.storyboard cùng với UISearchBar hiện tại của tôi và khi một BarButtonItem được nhấp, UIPickerView sẽ được hiển thị; nhưng có vẻ như tôi không thể có cả hai cùng một lúc trong một không gian nhất định.Swift - Lập trình tạo và hiển thị UIPickerView khi BarButtonItem được nhấn
Vì vậy, thay vào đó, lựa chọn tốt nhất của tôi là tạo lập trình theo cách lập trình. Tôi đã theo hướng dẫn hiện hành (http://sourcefreeze.com/ios-uipickerview-example-using-swift/) và các câu hỏi tương tự (Programmatically Create and Show UIPickerView) và có vẻ như tôi có một UIPickerView như mô tả của nó đang được in và tôi nhận được như sau (?):
<UIPickerView: 0x7f86425b1fb0; frame = (100 100; 100 162); layer = <CALayer: 0x7f8642543a20>>
Dưới đây là một phần mã hiện tại của tôi có thể được giúp đỡ:
AnimalTableViewController.swift
import UIKit
class AnimalTableViewController: UITableViewController, UINavigationControllerDelegate, UISearchBarDelegate, UISearchDisplayDelegate, UISearchResultsUpdating, UIPickerViewDelegate, UIPickerViewDataSource {
@IBOutlet var segmentedSortOption: UISegmentedControl!
var array : NSArray = Animal.animalStruct.jsonResult["animal"] as NSArray
var filteredArray = [[String:AnyObject]]()
var timer = NSTimer()
var counter:Int = 1
var typePickerView: UIPickerView = UIPickerView()
@IBOutlet var typeBarButton: UIBarButtonItem!
var resultSearchController = UISearchController()
var indexArray:String!
@IBAction func refresh(sender: AnyObject) {
self.tableView.reloadData()
println("refreshed")
}
override func viewDidLoad() {
super.viewDidLoad()
self.typePickerView.hidden = true
self.typePickerView.dataSource = self
self.typePickerView.delegate = self
self.typePickerView.frame = CGRectMake(100, 100, 100, 162)
self.typePickerView.backgroundColor = UIColor.blackColor()
self.typePickerView.layer.borderColor = UIColor.whiteColor().CGColor
self.typePickerView.layer.borderWidth = 1
timer = NSTimer.scheduledTimerWithTimeInterval(0.2, target: self, selector: Selector("result"), userInfo: nil, repeats: true)
self.resultSearchController = ({
let controller = UISearchController(searchResultsController: nil)
controller.searchResultsUpdater = self
controller.dimsBackgroundDuringPresentation = false
controller.searchBar.sizeToFit()
self.tableView.tableHeaderView = controller.searchBar
return controller
})()
}
func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return array.count
}
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String! {
return array[row]["type1"] as String
}
func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
typeBarButton.title = array[row]["type1"] as? String
typePickerView.hidden = false
}
func pickerView(pickerView: UIPickerView, widthForComponent component: Int) -> CGFloat {
return 36.0
}
func pickerView(pickerView: UIPickerView, rowHeightForComponent component: Int) -> CGFloat {
return 36.0
}
@IBAction func typePickerViewSelected(sender: AnyObject) {
typePickerView.hidden = false
println(typePickerView.description)
}
}
Xin vui lòng bạn có thể giúp tôi hiển thị UIPi lập trình tạo ra ckerView khi BarButtonItem được nhấn? Nếu bạn có thêm bất kỳ câu hỏi nào, vui lòng hỏi.
Rất cám ơn.
Bạn có thể cho tôi xem ví dụ không? Vì tôi không hoàn toàn chắc chắn ý bạn là gì. Bạn có muốn tôi thêm nó vào ViewController không? Mặc dù nó đang được khai báo trên TableViewController. Cảm ơn – Javz
@Javz Tôi đã cập nhật câu trả lời của mình bằng mã để hiển thị cho bạn. – pbush25
Tôi KHÔNG THỂ tin rằng tôi đã bỏ lỡ một cái gì đó rất đơn giản ..... Cảm ơn rất nhiều !! – Javz