UIPickerView show empty label swift

Viewed 18

UIPickerView not working for IOS 15.5 my code was working IOS 7.0 Since i updated to macOS Monterrey 12.5 and code 13 UIPickerView not working as expected anymore. It was a simple UIPickerView for selecting a number. No error or warning is received. Only show an empty gray label.

I need to add something in the code ?

class gemePrice: UIViewController,UIGestureRecognizerDelegate,   UIImagePickerControllerDelegate , UINavigationControllerDelegate ,UITextViewDelegate ,UITableViewDelegate, UITableViewDataSource , UIPickerViewDelegate , UITextFieldDelegate{

    var pckMarkup: UIPickerView!;
var t:CGAffineTransform!;
        var s:CGAffineTransform!;
        var u:CGAffineTransform!;
        
        pckMarkup = UIPickerView(frame: CGRect(x: 290, y: start_y+10, width: 60, height: 90));
        pckMarkup.delegate = self;
        t = CGAffineTransform (translationX: 0, y: 0);
        s = CGAffineTransform (scaleX: 1.5,y: 0.7);
        u = CGAffineTransform (translationX: 0 ,y: 0);
        pckMarkup.transform = t.concatenating (s.concatenating(u));
        pckMarkup.tag=10;
        //pckMarkup.backgroundColor = UIColor.lightGray;
        pckMarkup.backgroundColor =  UIColor(red: 225/255, green: 235/255, blue: 239/255, alpha: 1)
        pckMarkup.layer.borderColor =  (UIColor(red: 31/255, green: 128/255, blue: 170/255, alpha: 1).cgColor);
        
        
        pckMarkup.layer.borderWidth = 5.0
        pckMarkup.layer.masksToBounds = true
        pckMarkup.layer.cornerRadius = 8
        
       
        view.addSubview(pckMarkup);
      
        
        
        pckMarkup.selectRow(Int(markup+100.00), inComponent: 0, animated: false)
        
        
        
        let tgr = UITapGestureRecognizer(
            target:self,
            action:#selector(pickerTapped(_:))
        )
        
        tgr.numberOfTapsRequired = 2
        // self.view.addGestureRecognizer(tgr)     // This dispatches to tap().
        self.pckMarkup.addGestureRecognizer(tgr)
        
        tgr.cancelsTouchesInView = false
        
        
        
        
        
        
        
        reset_markup = UIButton(frame: CGRect(x: 285, y: 155, width: 45, height: 20))
        reset_markup.setTitle("0%", for: UIControlState());
        reset_markup.contentHorizontalAlignment = UIControlContentHorizontalAlignment.center;
        reset_markup.addTarget(self, action: #selector(go_reset_markup), for: .touchUpInside)
        reset_markup.backgroundColor = UIColor(red: 255/255, green: 0/255, blue: 0/255, alpha: 1)
        reset_markup.setTitleColor(UIColor.white, for: UIControlState())
        reset_markup.titleLabel!.font = UIFont(name: "Times New Roman", size: 14)

func numberOfComponentsInPickerView(_ pickerView: UIPickerView) -> Int {
        return 1;
    }
    
    func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
        return 201;
    }
    
    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
        print("row selected \(row)");
        
        
        if(pickerView.tag==10){
            self.markup=Double(row-100);
            display_price();
        }
        
        
    }
    
    
    
    func pickerView(_ pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusing view: UIView?) -> UIView {
        var pickerLabel: UILabel? = (view as? UILabel)
        if pickerLabel == nil {
            pickerLabel = UILabel()
            pickerLabel?.font = UIFont(name: "Arial", size: 18)
            pickerLabel?.textAlignment = .center
            
        }
        
        var return_string="";
        
        if(row<=100) {
            
            return_string = "\(row - 100)%"
            
        }
        if(row>100) {
            
            return_string =  "+\(row - 100)%"
            
        }
        
        pickerLabel?.text = return_string;
        pickerLabel?.textColor = UIColor.black
        
        return pickerLabel!
    }


 @objc func pickerTapped(_ recognizer: UITapGestureRecognizer) {
        print("markaping");
        pckMarkup.selectRow(100, inComponent: 0, animated: true)
        self.markup=0;
        display_price();
    }
1 Answers

You need to set datasource

pckMarkup.delegate = self;
pckMarkup.datasource = self;
Related