2011-12-19 18 views
7

Tengo 30 botones en una vista en Interface Builder. Cada uno tiene una etiqueta diferente entre 100001 y 100030. He descubierto que es fácil de usar la misma acción para cada botón, que pasa a lo largo de la etiqueta para cada uno cuando se presiona y el uso de código para decidir qué nivel de carga.¿Puedo conectar varios objetos con etiquetas diferentes al mismo IBOutlet?

quiero conectar todos los botones a un solo IBOutlet, pero tienen cada botón cargar una imagen diferente según los datos guardados del usuario y la etiqueta del botón.

¿Cómo puedo hacer esto?

Respuesta

23

Uso IBOutletCollection para añadir una colección toma a su controlador de vista, así:

@property (retain, nonatomic) IBOutletCollection(UIButton) NSMutableSet* buttons; 

Esto le permitirá conectar todos los botones a una sola toma. La propiedad buttons será un NSMutableSet que contiene todos sus botones. Puede seguir identificando botones individuales usando la propiedad tag del botón. Esto es útil si se quiere iterar a través de todos los botones, tal vez para configurar una imagen de cada botón:

for (UIButton *b in self.buttons) { 
    b.imageView.image = [self imageForTag:b.tag]; 
} 

(Usted tendrá que suministrar el método -imageForTag: para proporcionar la imagen adecuada para una determinada etiqueta, o encontrar alguna otra forma de mapear de etiquetas a imágenes.)

Por supuesto, si ya conoce el rango de valores de las etiquetas para todos sus botones, y si ha tenido cuidado de hacer que las etiquetas sean únicas dentro de la vista que contiene todas las botones, también puede obtener cada botón individualmente usando -viewWithTag:. Probablemente esto no sea tan rápido como tener todo el conjunto de botones ya creados, como lo ha hecho con la colección outlet descrita anteriormente, pero significa que hay algo menos que mantener.

+1

Sí, el clavo! Ive acaba de intentar esto, y NSLog'ed el recuento de la matriz, y su conexión a la perfección el botón ... El único este I no sabe que hacer luego es usar esto para cambiar esta imagen botones? ¿Qué código hago sabio? ¡Gracias! –

+0

Ajuste de la imagen del botón no es diferente con el IBOutletCollection de lo que está utilizando una vieja IBOutlet normal, excepto que primero tiene que conseguir cada botón de la colección. Agregué un pequeño fragmento de arriba que podría ayudar. – Caleb

+1

¡Gracias, eso funciona bien ahora! :RE –

0

Siga estos pasos para crear una matriz de puntos de venta de un conectarlo con IB elementos:

  • crear una matriz de IBOutlets
  • Añadir múltiples UiElements (Visto) en su interfaz de Storyboard ViewController
  • Seleccionar ViewController (En el guión gráfico) e inspector de conexión abierta
  • Hay una opción 'Colecciones de salida' en el inspector de conexión (Verá una matriz de puntos de venta allí)
  • Conecte si con los elementos de la interfaz

-

class ViewController2: UIViewController { 


    @IBOutlet var collection:[UIView]! 


    override func viewDidLoad() { 
     super.viewDidLoad() 
    } 
} 

enter image description here

Cuestiones relacionadas