2016-03-22 19 views
0

Bir UIScrollView bazı etiketleri ekleme ve bir NSMutableArray kendi metnini alıyorum:UIView Swift dan UILabel çıkarın 2

import UIKit 

class ViewController: UIViewController { 

    @IBOutlet weak var myScrollView: UIScrollView! 

    let containerView = UIView() 
    var array = NSMutableArray() 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     // containerView.frame = myScrollView.frame 

     array = ["some text", "some other text", "text 3and 4 loremnd 4 lorem ips ipsum", "more text", "Lorem ipsum dolor sit amet", "consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam", "quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in", "reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident", "sunt in culpa qui officia deserunt mollit anim id est laborum"] 

     self.update() 


    } 


    @IBAction func addSomething(sender: AnyObject) { 

     array.addObject("this is at the end") 

     self.update() 
    } 

    @IBAction func removeSomething(sender: AnyObject) { 

     self.containerView.removeFromSuperview() //this doesn't work 
     array.removeLastObject() 

     self.update() 

    } 


    func update() { 


     for i in 0...array.count - 1 { 

      let label = UILabel(frame: CGRectMake(10, CGFloat(i) * 74 + 20, 64, 64)) 
      label.text = array[i] as? String 

      label.textAlignment = NSTextAlignment.Center 
      label.numberOfLines = 0 
      label.lineBreakMode = NSLineBreakMode.ByWordWrapping 
      label.font = UIFont.systemFontOfSize(10) 
      label.adjustsFontSizeToFitWidth = true 
      label.minimumScaleFactor = 0.4 
      label.layer.masksToBounds = true 
      label.layer.cornerRadius = 32 
      label.layer.borderColor = UIColor.brownColor().CGColor 
      label.layer.borderWidth = 1.0 

      self.containerView.addSubview(label) 


     } 

     self.myScrollView.contentSize.height = CGFloat(array.count) * 78 
     myScrollView.addSubview(containerView) 


    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 





} 

Sorunum benim diziden son nesneyi kaldırmak rağmen dediğim zaman ki removeSomething function son etiket hala benim görüşümde.

Herhangi bir fikrin var mı?

cevap

1

self.update() numaralı telefonu aramadan önce self.containerView numaralı telefonu göremiyorum. Eminim, güncellemeyi defalarca çağırırsınız ve aynı yerlerde birkaç etiket vardır.

güncelleme başında() net containerView deneyin:

func update() { 
    containerView.removeFromSuperview() // Clear containerView 
    containerView = UIView() // Create a new instance 

    for i in 0...array.count - 1 { 

     let label = UILabel(frame: CGRectMake(10, CGFloat(i) * 74 + 20, 64, 64)) 
     label.text = array[i] as? String 

     label.textAlignment = NSTextAlignment.Center 
     label.numberOfLines = 0 
     label.lineBreakMode = NSLineBreakMode.ByWordWrapping 
     label.font = UIFont.systemFontOfSize(10) 
     label.adjustsFontSizeToFitWidth = true 
     label.minimumScaleFactor = 0.4 
     label.layer.masksToBounds = true 
     label.layer.cornerRadius = 32 
     label.layer.borderColor = UIColor.brownColor().CGColor 
     label.layer.borderWidth = 1.0 

     self.containerView.addSubview(label) 


    } 

    self.myScrollView.contentSize.height = CGFloat(array.count) * 78 
    myScrollView.addSubview(containerView) 


} 
+0

benim kaldır işlevine olduğunu, fakat hala aynı olması. self.containerView.removeFromSuperview() –

+0

Lütfen kodunuzu güncelleyin. – dichen

+0

Yeni güncelledim. artı update() sadece bir kez çağrılır. Bu benim tüm kodum bu şekilde ... –