Domanda

Ok. questa è una sfida.

Ho una vista tabella all'interno di un controller di navigazione.

Lo spingo dalla radice, dove ho un'azione di aggiunta che mi consente di aggiungere un nuovo record. Funziona bene.

Ora quello che ho provato a fare è aggiungere questa vista da tavolo a una vista della barra delle schede (senza un controller della barra delle schede perché non funzionerà) ma all'interno dello stesso controller di navigazione.

Quindi quello che voglio fare è questo: Root > TabBarView (carica Tableview) > aggiungi nuovo record.

Il problema risiede nel contesto dell'oggetto gestito, ottengo l'intero " impossibile trovare l'entità errore " ma non ho idea di come risolverlo.

Sono riuscito a far apparire il controller di visualizzazione modale AddRecord da tabBarView, ma si presenta senza una barra di navigazione, mentre se provo ad aggiungere un record in tableView solitario (al di fuori della barra) non è un problema .

Ora sto chiamando i miei metodi dai pulsanti di navigazione di TabBarView, instradando i metodi alle visualizzazioni di tabella.

So che i miei metodi devono essere richiamati da tabBarView invece che dall'attuale tableview ora, e funzionano, ma non so come gestire il MOC quando è in un tabView.

Oh, e questo si basa su ricette e libri coredata, quindi quando viene attivato il metodo di aggiunta record, crea un nuovo MOC per crearlo, quindi si reintegra nel MOC principale quando hai finito.

Qualche idea?

È stato utile?

Soluzione

Sembra che tu abbia un paio di problemi.

  1. " Impossibile trovare l'entità " errore: dipende dal contesto di oggetto gestito che si sta utilizzando. Se hai creato un MOC separato per gestire l'oggetto che stai modificando (che è una buona idea, a proposito), assicurati di assegnargli un Coordinatore negozio persistente. Ecco come un MOC scopre quali oggetti sono disponibili. Se stai utilizzando il MOC creato nel delegato dell'app, assicurati di scrivere correttamente il nome dell'entità.
  2. Nessuna barra di navigazione nel foglio: quando si inserisce un controller di visualizzazione in un controller di navigazione, il suo navigationItem viene utilizzato per popolare la barra di navigazione. Quando si presenta un controller di visualizzazione come foglio, viene visualizzato solo il controller di visualizzazione. Non è incorporato in un controller di navigazione. Per visualizzare l'elemento di navigazione, è necessario creare un nuovo controller di navigazione con il controller di visualizzazione come root, quindi presentare la vista del controller di navigazione.

Altri suggerimenti

Per quanto riguarda il MOC principale, le visualizzazioni e i controller dovrebbero essere irrilevanti. Ottenere un riferimento al MOC in qualsiasi controller che si sta utilizzando e operare con quel MOC. Se il delegato dell'applicazione crea il MOC principale, impostalo come proprietà di quel delegato e accedilo dalla vista o dal controller della scheda.

Non seguo del tutto il problema di navigazione che stai riscontrando, ma se non c'è alcuna barra di navigazione quando ne hai bisogno, sospetto che tu debba creare e aggiungere un UINavigationController da qualche parte che stai aggiungendo una sottoclasse UIViewController. Rendi la sottoclasse la radice del nuovo UINavigationController e inserisci il controller nella scheda o altro.

Il contesto dell'oggetto gestito (MOC) non dovrebbe dipendere dalla navigazione o dalle viste. Fa parte del modello. (Anche se come sai, un secondo MOC per una vista di modifica annullabile dipenderebbe dalla navigazione nella misura in cui lo crei per l'uso da parte dell'editor.)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top