2015-05-19 5 views
15

Co to jest biblioteka do rozwijanego menu w szybkim tempie? Jestem nowy w Xcode i języku Swift, więc czy ktoś może polecić mi jak zaimplementować listę rozwijaną w szybkim tempie?Tworzenie listy rozwijanej za pomocą Swift?

+1

Sprawdź ten link, może to pomóc http://code4app.net/category/menu – aBilal17

+0

spróbować tego https: // www .dropbox.com/s/l8rflh1oygtcerh/single% 20dropdown.txt? dl = 0 –

Odpowiedz

8

Niestety, jeśli szukasz, aby zastosować UIPopoverController w iOS9, dostaniesz ostrzeżenie przestarzałej klasy. Zamiast tego musisz ustawić pożądaną właściwość widoku, aby uzyskać ten sam wynik.

Popover

W poziomo regularnego środowiska, styl prezentacji których zawartość jest wyświetlana w widoku popover. Zawartość tła jest przyciemniona i stuknięcia poza popover powodują, że popover zostanie odrzucony jako . Jeśli nie chcesz, aby dotknięcia odrzuciły popover, możesz przypisać jeden lub więcej widoków do właściwości passthroughViews powiązanego obiektu UIPopoverPresentationController skojarzonego z , który możesz uzyskać z właściwości popoverPresentationController.

W poziomym kompaktowym środowisku ta opcja zachowuje się tak samo jak UIModalPresentationFullScreen.

Dostępne w systemie iOS 8.0 i nowszych wersjach.

referencyjny: https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIViewController_Class/#//apple_ref/c/tdef/UIModalPresentationStyle

+0

Dzięki za wskazanie braku zgodności z UIPopoverController –

17

(Swift 3) Dodaj pole tekstowe i UIPickerView do serii ujęć, a następnie dodać delegata i źródło danych do UIPickerView i dodać delegata do pola tekstowego. Śledź swoją pomoc https://youtu.be/SfjZwgxlwcc

import UIKit 

class ViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource, UITextFieldDelegate { 


@IBOutlet weak var textBox: UITextField! 
@IBOutlet weak var dropDown: UIPickerView! 


var list = ["1", "2", "3"] 

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. 
} 


public func numberOfComponents(in pickerView: UIPickerView) -> Int{ 
    return 1 

} 

public func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int{ 

    return list.count 

} 

func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { 

    self.view.endEditing(true) 
    return list[row] 

} 

func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { 

    self.textBox.text = self.list[row] 
    self.dropDown.isHidden = true 

} 

func textFieldDidBeginEditing(_ textField: UITextField) { 

    if textField == self.textBox { 
     self.dropDown.isHidden = false 
     //if you dont want the users to se the keyboard type: 

     textField.endEditing(true) 
    } 

} 
} 
1

Musisz mieć pewność, aby korzystać z protokołów UIPickerViewDataSource i UIPickerViewDelegate lub będzie rzucać błąd AppDelegate jako SWIFT 3

Proszę również zwrócić uwagę na zmiany w składni:

func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int 

jest teraz:

public func numberOfComponents(in pickerView: UIPickerView) -> Int 

Poniższy dział pracował dla mnie.

import UIkit 

class ViewController: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate { 

    @IBOutlet weak var textBox: UITextField! 
    @IBOutlet weak var dropDown: UIPickerView! 


    var list = ["1", "2", "3"] 

    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. 
    } 


    public func numberOfComponents(in pickerView: UIPickerView) -> Int{ 
     return 1 

    } 

    public func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int{ 

     return list.count 

    } 

    func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { 

     self.view.endEditing(true) 
     return list[row] 

    } 

    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { 

     self.textBox.text = self.list[row] 
     self.dropDown.isHidden = true 

    } 

    func textFieldDidBeginEditing(_ textField: UITextField) { 

     if textField == self.textBox { 
      self.dropDown.isHidden = false 
      //if you dont want the users to se the keyboard type: 

      textField.endEditing(true) 
     } 

    } 
} 
1

Korzystanie UIPickerView jest właściwa droga, aby wdrożyć go zgodnie z wytycznymi interfejsu HID Apple'a

Jeśli wybierzesz rozwijanej w safari mobilnych pokaże UIPickerView pozwolić użyj wybierz rozwijane elementy.

Alternatywnie

można użyć UIPopoverController do iOS 9 jak jego przestarzałe ale lepiej trzymać się z UIModalPresentationPopover widzenia chcesz o Informacja oraz

można użyć UIActionsheet, aby wyświetlić elementy, ale lepiej użyć UIAlertViewController i wybierz UIActionSheetstyle aby pokazać jak dawna jest przestarzała w najnowszych wersjach