Pregunta

Ok. este es un desafío.

Tengo una vista de tabla dentro de un controlador de navegación.

Lo empujo desde la raíz, donde tengo una acción de agregar que me permite agregar un nuevo registro. Eso funciona bien.

Ahora lo que he intentado hacer es agregar esta vista de tabla a una vista de barra de pestañas (sin un controlador de barra de pestañas porque eso no funcionará) pero dentro del mismo controlador de navegación.

Entonces, lo que quiero hacer es esto: Root > TabBarView (carga Tableview) > agregar nuevo registro.

El problema radica en el contexto del objeto administrado, obtengo que el conjunto "no puede encontrar el error de entidad" pero no tengo idea de cómo solucionarlo.

He logrado que el controlador de vista modal AddRecord se muestre desde tabBarView, pero se presenta sin una barra de navegación, mientras que si intento agregar un registro en tableView solitario (fuera de la barra de pestañas) no hay problema .

Ahora estoy llamando a mis métodos desde los botones de navegación de TabBarView, dirigiéndome a los métodos de vistas de tabla.

Sé que mis métodos deben llamarse desde tabBarView en lugar de la vista de tabla real ahora, y se activan, pero no sé cómo administrar el MOC cuando está en un tabView.

Ah, y esto se basa en recetas y libros de coredata, por lo que cuando se activa el método de agregar registro, crea un nuevo MOC para crearlo, y luego se reintegra en el MOC principal cuando haya terminado.

¿Alguna idea?

¿Fue útil?

Solución

Parece que tienes un par de problemas.

  1. " No se puede encontrar la entidad " error: esto depende del contexto de objeto gestionado que esté utilizando. Si creó un MOC separado para administrar el objeto que está editando (lo cual es una buena idea, por cierto), asegúrese de asignarle un Coordinador de tienda persistente. Así es como un MOC descubre qué objetos están disponibles. Si está utilizando el MOC creado en el Delegado de aplicaciones, asegúrese de escribir correctamente el nombre de la entidad.
  2. Sin barra de navegación en la hoja: cuando inserta un controlador de vista en un controlador de navegación, su navigationItem se usa para completar la barra de navegación. Cuando presenta un controlador de vista como una hoja, solo se muestra el controlador de vista. No está incrustado en un controlador de navegación. Para que se muestre el elemento de navegación, deberá crear un nuevo controlador de navegación con su controlador de vista como raíz y luego presentar la vista del controlador de navegación.

Otros consejos

En lo que respecta al MOC principal, las vistas y los controladores deben ser irrelevantes. Obtenga una referencia al MOC en cualquier controlador que esté utilizando y opere con ese MOC. Si el delegado de su aplicación crea el MOC principal, conviértalo en una propiedad de ese delegado y acceda a él desde su vista o controlador de pestaña.

No entiendo muy bien qué problema de navegación está teniendo, pero si no hay una barra de navegación cuando la necesita, sospecho que necesita crear y agregar un UINavigationController en algún lugar donde esté agregando una subclase UIViewController. Convierta la subclase en la raíz del nuevo UINavigationController y coloque el controlador en la pestaña o lo que sea.

El contexto de objeto administrado (MOC) no debe depender de la navegación o las vistas. Es parte del modelo. (Aunque, como sabe, un segundo MOC para una vista de edición cancelable dependería de la navegación en la medida en que lo cree para que el editor lo use).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top