нуждался в помощи с созданными кнопками dinámicamente с программирования в swift

то, что у меня есть до этого момента, состоит в том, что уже я верю в кнопки, что я делаю, состоит в том, чтобы консультировать url и получать один JSON что даст мне количество кнопок, которые я нуждаюсь в том, чтобы создать, и все добро до тех пор, пока я не даю им target, у каждой кнопки должен быть его собственный tag, и когда я выхожу click на любую кнопку всегда, я заменяюсь последним и все кнопки остаются зарегистрированными с тем же tag (последний) я оставляю мой код он надеялся объяснить меня хорошо.

override func viewDidAppear(animated: Bool) {

    for(var i = 0; i < self.Categorias.count; i++)  
    {
        btnCategoria = UIButton()
        lblNombreCat = UILabel()

        if contador < 2
        {
            taged = Int(iidCategorias[i])!
            // Le damos Color de fondo al boton
            self.btnCategoria.setImage(UIImage(named: "planos.png"), forState: .Normal)
            // Radio del boton y otras configuraciones
            self.btnCategoria.layer.cornerRadius = CGFloat(20.0)
            // Generamos la posición (x, y, ancho y alto)
            self.btnCategoria.frame = CGRectMake(self.x, self.y, 50, 50)
            self.btnCategoria.tag = taged

            self.btnCategoria.addTarget(self, action: "siguienteVentana", forControlEvents: .TouchUpInside)

            let StoryBoardCategoria: UIStoryboard = UIStoryboard(name:"Main", bundle: nil)
            ProductosView = StoryBoardCategoria.instantiateViewControllerWithIdentifier("productos") as! ViewControllerProductos
            ProductosView.etiqueta = String(btnCategoria.tag)

            self.lblNombreCat.text = self.Categorias[i]
            self.lblNombreCat.numberOfLines = 2
            self.lblNombreCat.font = UIFont.boldSystemFontOfSize(12)

            let size = lblNombreCat.sizeThatFits(maxSize)
            self.lblNombreCat.frame = CGRect(origin: CGPoint(x: xlabl-20, y: ylabel+50), size: size)
            self.lblNombreCat.textAlignment = .Center

            contador++

            self.x = 220
            self.xlabl = 220
            if contador > 1
            {

                contador = 0
                self.y += 80
                self.x = 45
                self.xlabl = 45
                self.ylabel += 80
            }
        }
        self.view.addSubview(self.btnCategoria)
        self.view.addSubview(self.lblNombreCat)
    }
}

я не присоединю, где я приношу себя JSON потому что я думаю, что он не необходим.

заранее спасибо, я надеюсь Ваш ответ.

0
задан 11.07.2017, 19:57
1 ответ

То, что он перемещает, состоит в том, что в каждый iteraciГіn цикла ты перемещаешь его в драйвер стоимость tag, когда ты делаешь: ProductosView.etiqueta = String (btnCategoria.tag) Тогда всегда появляется последний tag

то, что ты должен делать, состоит в том, чтобы не звонить в драйвер до тех пор, пока они не нажмут в botГіn и работал target, тогда ahГ - ты помещаешь tag

сними эту часть:

       let StoryBoardCategoria: UIStoryboard = UIStoryboard(name:"Main", bundle: nil)
        ProductosView = StoryBoardCategoria.instantiateViewControllerWithIdentifier("productos") as! ViewControllerProductos
        ProductosView.etiqueta = String(btnCategoria.tag)

И deberГ-схвати иметь одну funciГіn, что работает в target botГіn:

func siguienteVentana(sender: UIButton) {
   //han pulsado el botón, llamo al controlador pasando el tag
     let StoryBoardCategoria: UIStoryboard = UIStoryboard(name:"Main", bundle: nil)
     ProductosView = StoryBoardCategoria.instantiateViewControllerWithIdentifier("productos") as! ViewControllerProductos
     //aquí paso el tag
     ProductosView.etiqueta = String(sender.tag)

     //deberías mostrar el controlador a partir de aquí, como no lo tienes no se como te vas a ese controlador

}

И так deberГ, - чтобы функционировать. Другая вещь, чем не harГ - в серьезную использовать self с btnCategoria и с lblNombreCat, ГЎmbito будет являться for и поместив self кажется, что это свойство класса.

2
ответ дан 24.11.2019, 07:35
  • 1
    Большое спасибо я я функционирую, чего мне не хватало, было, чем в funció n, что позвонил с target, не имело pará метры ' UIButton' и я посылал называть переменную botó n – Luis García 11.07.2017, 23:48
  • 2
    другой вопрос, я надеюсь, что я не беспокойство, когда я посылаю следующий драйвер, он не появляется у меня с NavigationController, я посылаю называть это с self.presentViewController(ProductosView, bool: true, completion: nil) – Luis García 11.07.2017, 23:53
  • 3
    Это зависит от от, как ты хотел, чтобы ему тебя показал новый драйвер. С self.presentViewController ты делаешь это модальной формой, нормальное обычно состоит в том, что он появляется с внизу, он появляется, ты делаешь что-то и это закрываешь. Если ты это делаешь делая push navigationController, обычно будь тем, который появляется с правой стороны, и потом у тебя есть botó n back, чтобы переходить с одного сайта на другой к atrá в. Исследуй performSegue для этой секунды opció n – Spidvmp 12.07.2017, 09:48