Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 如何在UIAlertController中添加UIPickerView?_Swift_Uipickerview_Uialertcontroller - Fatal编程技术网

Swift 如何在UIAlertController中添加UIPickerView?

Swift 如何在UIAlertController中添加UIPickerView?,swift,uipickerview,uialertcontroller,Swift,Uipickerview,Uialertcontroller,谁能帮帮我吗?我不知道怎么做。我有这样的课 import Foundation import UIKit class Alert { func loginAlert(viewController : UIViewController , callback: (result: Bool) -> ()) { var alert = UIAlertController(title : "Compose", message : "Fill the

谁能帮帮我吗?我不知道怎么做。我有这样的课

import Foundation
import UIKit
class Alert {

    func loginAlert(viewController : UIViewController , callback: (result: Bool) -> ()) {
        var alert = UIAlertController(title : "Compose",
            message : "Fill the following",
            preferredStyle: UIAlertControllerStyle.Alert
        )


        var loginAction = UIAlertAction(title: "Send", style: UIAlertActionStyle.Default){
            UIAlertAction in


        }
        var cancelAction = UIAlertAction(title: "Cancel", style: UIAlertActionStyle.Cancel){
            UIAlertAction in

            callback(result: false);
        }
        alert.addAction(loginAction)
        alert.addAction(cancelAction)



        alert.addTextFieldWithConfigurationHandler { (textField) -> Void in
            textField.secureTextEntry = true
            textField.placeholder = "Message"

        }


        viewController.presentViewController(alert, animated: true, completion: nil)

    }

}
我读到了关于
addTextFieldWithConfigurationHandler
的文章,似乎它只是针对textfield的,我想知道我如何才能做到这一点。谁能帮我一下,有什么意见和建议都行。提前感谢。

您可以:

let ctrl = UIAlertController(title: "title", message: "\n\n\n\n\n", preferredStyle: UIAlertControllerStyle.Alert)

let picker: UIPickerView = ...
picker.center.x = ctrl.view.center.x
picker.center.y = ctrl.view.center.y - picker.frame.height / 2
       
let addAction = UIAlertAction(title: "ok", style:  UIAlertActionStyle.Default, handler: nil)

ctrl.addAction(addAction)
ctrl.addAction(UIAlertAction(title: I18N.load(I18N.PREFIX + "cancel"), style: UIAlertActionStyle.Cancel, handler: nil))
                    
ctrl.view.addSubview(picker)//HERE
    
view.presentViewController(ctrl, animated: true, completion: nil)

问题是设置视图的样式

我需要在带有取消/启动按钮的AlertController(控制NSTimer)内设置一个弹出式pickerView。它也是可以固定的。 我已经提取了所有计时器的东西,这是基本的选择器代码,希望它能帮助别人

ps完整月份弹出一个选择器,将计时器设置为选定的选择器值,并在计时器完成时播放一首曲子。如果需要的话,你可以把它贴出来。 它为烹饪书提供定时器/报警器


您不能将自定义视图添加到警报控制器。噢!那么alertview中只有textfield可用?我有工作吗@rmaddy您唯一的选择是找到一个自定义的警报视图类型类(或编写您自己的类),该类允许进行此类自定义。@rmaddy很抱歉打扰您,您有什么我可以查看的吗?可能是
let pickerSet = ["5","10","15","20","30","35","40","45","50","55","60", "65", "70", "75", "80", "85", "90"]
func showPickerInActionSheet() {
    let message = "\n\n\n\n\n\n\n\n"
    let alert = UIAlertController(title: "", message: message, preferredStyle: UIAlertControllerStyle.Alert)
    alert.modalInPopover = true

    let attributedString = NSAttributedString(string: "Set Timer Minutes", attributes: [
        NSFontAttributeName : UIFont.systemFontOfSize(20), //your font here,
        NSForegroundColorAttributeName : UIColor(red:0.29, green:0.45, blue:0.74, alpha:1.0) ])
    alert.setValue(attributedString, forKey: "attributedTitle")

    //Create a frame (placeholder/wrapper) for the picker and then create the picker
    let pickerFrame: CGRect = CGRectMake(35, 52, 200, 140) // CGRectMake(left, top, width, height) - left and top are like margins
    let picker: UIPickerView = UIPickerView(frame: pickerFrame)
    picker.backgroundColor = UIColor(red:0.29, green:0.45, blue:0.74, alpha:1.0)

    //set the pickers datasource and delegate
    picker.delegate = self
    picker.dataSource = self

    //Add the picker to the alert controller
    alert.view.addSubview(picker)

    let cancelAction = UIAlertAction(title: "Cancel", style: .Cancel, handler: nil)
    alert.addAction(cancelAction)

    let okAction = UIAlertAction(title: "Start", style: .Default, handler: {
        (alert: UIAlertAction!) -> Void in self.doSomethingWithValue(Int(self.pickerSet[picker.selectedRowInComponent(0)])!) })
    alert.addAction(okAction)

    viewController.presentViewController(alert, animated: true, completion: nil)
}

func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int { return 1 }

func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { return pickerSet.count }

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

func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { return pickerSet[row] }

func pickerView(pickerView: UIPickerView, attributedTitleForRow row: Int, forComponent component: Int) -> NSAttributedString? {
    let titleData = pickerSet[row]
    let myTitle = NSAttributedString(string: titleData, attributes: [NSFontAttributeName:UIFont(name: "Verdana", size: 15.0)!,NSForegroundColorAttributeName:UIColor.whiteColor()])
    return myTitle
}


func doSomethingWithValue(value: Int) {
    self.selection = value
}