2012-01-03 9 views
6

Estoy usando XCode 4 y haciendo un guion gráfico de una aplicación que estoy creando, sin embargo, no puedo modificar visualmente la UIToolbar.Modificando visualmente una UIToolbar desde el storyboard xcode

Estoy intentando modificar una UIToolbar que está dentro de un UITableViewController; sin embargo, tengo que colocar la UIToolbar fuera de la jerarquía correcta para poder modificarla visualmente. Intenté colocarlo en el área del controlador de vista, pero eso no lo hace aparecer.

En un momento pude hacer que aparezca a continuación, ya que es su propio objeto sin embargo, no pude volver a crear eso.

Problem

Una vez que fue capaz de conseguir que se vea como esta Problem

Respuesta

21

Su UITableViewController está dentro de UINavigationController, que ya tiene su propia UIToolbar -no necesita arrastrar una nueva en su jerarquía de vistas. Interface Builder puede simular la barra de herramientas para usted en "Métricas simuladas" en el panel de inspectores.

Una vez que la barra de herramientas simulada está visible, simplemente arrastre UIBarButtonItem s en ella. Use un artículo personalizado con una vista personalizada si necesita algo más complicado que un botón o un espaciador.

Si necesita que su barra de herramientas tenga elementos dinámicos, puede mantener una referencia a través de IBOutlet s sin tenerlos necesariamente en su vista. A continuación, configure la propiedad UITableViewControllertoolbarItems o llame al -setToolbarItems:animated: en tiempo de ejecución para ver los elementos adecuados.

Ver Apple UINavigationController Class Reference: Displaying a Toolbar.

+0

Gracias ese era el problema, no podía arrastrar elementos a la barra de herramientas simulada anteriormente, pero fue debido a que mantuve una sesión de xcode en ejecución después de que detectó un bloqueo. Simplemente arrastrando los elementos del botón de la barra a la barra de herramientas simulada dio el resultado esperado. – 1dayitwillmake

+0

Aunque, al mismo tiempo, me gustaría saber cómo pude conseguir que la barra de herramientas se muestre en la parte inferior como su propia entidad dos veces. – 1dayitwillmake

+1

Oh, yo también; No tengo idea. –

1

UITableViewControllers sólo permiten una vista de objeto, que por supuesto es UITableView. Las UITableViews no son cooperativas para la subvisión y generalmente empujan todo en pies de página o encabezados. Algo como esto no es posible:

-TableController 
    -Table 
     -Subview 
     -Another subview 

UITableViewControllers se reducen a esto:

-TableViewController 
    -Table 

lo que tendrá que utilizar un UIViewController y declarar un UITableView allí. Aquí está la Jerarquía que puedes usar a continuación:

- ViewController <Table's Delegate & Data Source> 
    - View   
     -Table 
     - Your UIToolbar 

En sus ViewController.h declaran IBOutlet UITableView y conectarse origen de datos y Delegado a la ViewController. Luego, simplemente agregue las implementaciones de UITableView a su archivo .m y estará listo.

+0

No tengo ningún problema durante el tiempo de ejecución, simplemente está dentro del guión gráfico. No puedo modificar visualmente la barra de herramientas, sin embargo, en tiempo de ejecución, aparece correctamente. – 1dayitwillmake

+0

Bueno, pruebe lo que le expliqué y quizás funcione. – JonasG

+0

Es una idea interesante, sin embargo, no debería tener que hacer eso. También pude hacer que la barra de herramientas se muestre sola una vez por accidente. Así que estoy seguro de que hay una manera. – 1dayitwillmake

2

Para responder a su pregunta, el editor visual simplifica la configuración de la mayoría de los controles, jerarquías de vista y patrones de delegación, pero aún le corresponde al desarrollador asegurarse de que se retiren. La implementación de UITableViewController hace ciertas suposiciones y afirmaciones sobre su jerarquía de vistas que Xcode no aplica a través del editor visual. Dado que la jerarquía de vista deseada no es compatible, debo suponer que el comportamiento del editor es indefinido o irrelevante. Para una solución, vea la sugerencia de Maxner.

Cuestiones relacionadas