DetailViewController no actualiza para la animación -- ios campo con objective-c campo con uisplitviewcontroller camp Relacionados El problema

DetailViewController Not Updating For Animation


1
vote

problema

Español

Tengo un controlador UISplitview7 (con una vista maestra y detalle). Entonces, cuando el detailview carga el viewDidLoad llama una función llamada This directive is supposed to be called everytime the inputField is given focus/cursor.0 con el siguiente código:

  This directive is supposed to be called everytime the inputField is given focus/cursor.111  

Ahora, cuando se ejecuta por primera vez, mi This directive is supposed to be called everytime the inputField is given focus/cursor.2 se anima correctamente a la posición pasada ( This directive is supposed to be called everytime the inputField is given focus/cursor.3 se inicializa y se crea un todo en vista de This directive is supposed to be called everytime the inputField is given focus/cursor.4 < / Código> También "Llamado Función" se imprime en el registro. Sin embargo, tengo un controlador de visualización y en el This directive is supposed to be called everytime the inputField is given focus/cursor.5 Tengo el siguiente código (en el archivo This directive is supposed to be called everytime the inputField is given focus/cursor.6 )

  This directive is supposed to be called everytime the inputField is given focus/cursor.7  

Cuando selecciono la celular llamada This directive is supposed to be called everytime the inputField is given focus/cursor.8 , "llamada Function" se muestra en el This directive is supposed to be called everytime the inputField is given focus/cursor.9 , pero la animación que ocurrió cuando la vista se cargó por primera vez. . Me pregunto si de alguna manera debo volver a cargar el A.shape = [50,80,100,100] 0 o inicializarlo nuevamente (pero intenté inicializarlo nuevamente y eso no funcionó)

Quisiera si alguien pudiera ver esto y ayudarme a hacer esto funcionando.

Original en ingles

I have a UISplitview controller (with a master and detail view). So, when the detailview loads the viewDidLoad calls a function named [self animateToPosition]; with the following code:

-(void*)animateToPosition {     NSLog(@"Called Function");     [worldV animateToPosition:MaplyCoordinateMakeWithDegrees(-122.4192, 37.7793) time:1.0];      [self.view setNeedsDisplay];      return 0; } 

Now, when this is first run, my globeViewC correctly animates to the position passed in (worldV is initialized and created an all in viewDidLoad of detailviewController also "Called Function" is printed in the log. However, I have a view controller and in the didSelectRowAtIndexPath I have the following code (in the file masterViewController.m)

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {     if ([[testArray objectAtIndex:indexPath.row]isEqualToString:@"Menu1"]) {         DetailViewController *test=[[DetailViewController alloc]init];         [self addChildViewController:test];         [self.view addSubview:test.view];         [test didMoveToParentViewController:self];         [test animateToPosition];     } } 

When I select the cell called menu1, "Called function" DOES display in the NSLog, but the animation that occurred when the view was first loaded doesn't anymore. I'm wondering if I must somehow reload the detailviewcontroller or initialize it again (but I tried initializing it again and that didn't work)

Would like if someone could see this and help me get this working.

        

Lista de respuestas

1
 
vote
vote
La mejor respuesta
 

Sería útil si pudiera mostrar más, especialmente cómo usted alloc y init su worldV y lo que tiene en su var mainApp = angular.module("myapp", ['ngMaterial']); mainApp.directive("myDirective", function($log) { return { restrict : 'A', require : "ngModel", scope : { myDirective : "=" }, link : function(scope, element, attrs, ngModel) { element.on('focus', doSomething); function doSomething() { $log.log("value is:", scope.myDirective); if (ngModel.$isEmpty() && scope.myDirective && scope.myDirective.length > 0) { ngModel.$setUntouched(); ngModel.$setValidity(); } } } } }); 0 .

Normalmente, no creas un nuevo hormigón de detalles para la configuración de SplitView.

En lugar de crear un nuevo detalleviewcontroller, intente agarrar la retención del controlador de vista de detalles existente creando una propiedad:

  var mainApp = angular.module("myapp", ['ngMaterial']);  mainApp.directive("myDirective", function($log) {     return {         restrict : 'A',         require : "ngModel",         scope   : {             myDirective : "="         },         link    : function(scope, element, attrs, ngModel) {           element.on('focus', doSomething);            function doSomething() {             $log.log("value is:", scope.myDirective);             if (ngModel.$isEmpty() && scope.myDirective && scope.myDirective.length > 0) {                ngModel.$setUntouched();                ngModel.$setValidity();             }         }        }     } }); 111  

y:

  var mainApp = angular.module("myapp", ['ngMaterial']);  mainApp.directive("myDirective", function($log) {     return {         restrict : 'A',         require : "ngModel",         scope   : {             myDirective : "="         },         link    : function(scope, element, attrs, ngModel) {           element.on('focus', doSomething);            function doSomething() {             $log.log("value is:", scope.myDirective);             if (ngModel.$isEmpty() && scope.myDirective && scope.myDirective.length > 0) {                ngModel.$setUntouched();                ngModel.$setValidity();             }         }        }     } }); 2  

Lo primero que debe probar aquí es si su var mainApp = angular.module("myapp", ['ngMaterial']); mainApp.directive("myDirective", function($log) { return { restrict : 'A', require : "ngModel", scope : { myDirective : "=" }, link : function(scope, element, attrs, ngModel) { element.on('focus', doSomething); function doSomething() { $log.log("value is:", scope.myDirective); if (ngModel.$isEmpty() && scope.myDirective && scope.myDirective.length > 0) { ngModel.$setUntouched(); ngModel.$setValidity(); } } } } }); 3 es var mainApp = angular.module("myapp", ['ngMaterial']); mainApp.directive("myDirective", function($log) { return { restrict : 'A', require : "ngModel", scope : { myDirective : "=" }, link : function(scope, element, attrs, ngModel) { element.on('focus', doSomething); function doSomething() { $log.log("value is:", scope.myDirective); if (ngModel.$isEmpty() && scope.myDirective && scope.myDirective.length > 0) { ngModel.$setUntouched(); ngModel.$setValidity(); } } } } }); 4 . Un simple NSLOG en var mainApp = angular.module("myapp", ['ngMaterial']); mainApp.directive("myDirective", function($log) { return { restrict : 'A', require : "ngModel", scope : { myDirective : "=" }, link : function(scope, element, attrs, ngModel) { element.on('focus', doSomething); function doSomething() { $log.log("value is:", scope.myDirective); if (ngModel.$isEmpty() && scope.myDirective && scope.myDirective.length > 0) { ngModel.$setUntouched(); ngModel.$setValidity(); } } } } }); 5 revelaría la respuesta.

y siempre que necesite llamar a ese método, haga:

  var mainApp = angular.module("myapp", ['ngMaterial']);  mainApp.directive("myDirective", function($log) {     return {         restrict : 'A',         require : "ngModel",         scope   : {             myDirective : "="         },         link    : function(scope, element, attrs, ngModel) {           element.on('focus', doSomething);            function doSomething() {             $log.log("value is:", scope.myDirective);             if (ngModel.$isEmpty() && scope.myDirective && scope.myDirective.length > 0) {                ngModel.$setUntouched();                ngModel.$setValidity();             }         }        }     } }); 6  

Para animar de una coordenada a otra con el tiempo, es posible que deba cambiar su método undefined17 a:

  var mainApp = angular.module("myapp", ['ngMaterial']);  mainApp.directive("myDirective", function($log) {     return {         restrict : 'A',         require : "ngModel",         scope   : {             myDirective : "="         },         link    : function(scope, element, attrs, ngModel) {           element.on('focus', doSomething);            function doSomething() {             $log.log("value is:", scope.myDirective);             if (ngModel.$isEmpty() && scope.myDirective && scope.myDirective.length > 0) {                ngModel.$setUntouched();                ngModel.$setValidity();             }         }        }     } }); 8  

Consulte si su undefined19 es un objeto, que dudo.

Entonces, para resumir, en el undefined20 , obtener una retención del controlador de vista de detalles.

Cuando se llama mouseover1 , use el nuevo método sugerido y pase la coordenada y la hora de esta manera:

  mouseover2  

Espero que esto ayude.

 

It would be helpful if you could show more, especially how you alloc and init your worldV and what you have in your viewDidLoad.

Normally you don't create a new DetailViewController for SplitView setup.

Instead of creating a new DetailViewController, try to grab a hold of the existing detail view controller by creating a property:

@property(strong, nonatomic) DetailViewController *detailViewController; 

and:

self.detailViewController = (DetailViewController *)[[self.splitViewController.viewControllers lastObject] topViewController]; 

First thing to test here is whether your worldV is nil. A simple NSLog in animateToPosition would reveal the answer.

And whenever you need to call that method, do:

[self.detailViewController animateToPosition]; 

To animate from one coordinate to another with time, you may need to change your animateToPosition method to:

-(void)animateToPosition:(MaplyCoordinate)coordinates time:(CGFloat)time 

Consult whether or not your MaplyCoordinate is an object, which I doubt.

So, to sum up, in your tableview's viewDidLoad, get a hold of the detail view controller.

When didSelectRow gets called, use the new method suggested and pass the coordinate and time this way:

[self.detailViewController animateToPosition:coordinates time:1.0]; 

Hope this helps.

 
 
 
 
0
 
vote

En la función DIDSSELECTROWATINDEXPATHPATH, crea un detalleviewController, pero no lo agrega a la jerarquía de la vista. Debe agregarlo al controlador de vista principal como este

  mouseover3  

o simplemente agregarlo a la navegación o presentarlo como un modalviewcontroller

 

In didSelectRowAtIndexPath function you create an DetailViewController but you don't add it to the view hierarchy. You should add it to the parent view controller like this

[self addChildViewController:viewController]; [self.view addSubview:viewController.view]; [viewController didMoveToParentViewController:self]; 

or just add it to navigation or present it as a modalViewController

 
 
 
 

Relacionados problema

2  Problemas de UISPLITVIEWCONTROLERN con iOS 5.1  ( Uisplitviewcontroller problems with ios 5 1 ) 
Tengo un problema, Estoy programando con MonOtouch 5.2.8 para iOS 5.1. Pero dado que la actualización de iOS 5.1, mi iPad configura el UISPLITVIEWCONTROLE...

1  UisplitView y la barra de herramientas personalizados en la parte inferior  ( Uisplitview and custom toolbar at bottom ) 
Así que tengo un controlador de visión dividida y estoy tratando de poner una barra de herramientas en la parte inferior de mi vista de raíz programáticamente...

0  UisplitViewController no está girando correctamente  ( Uisplitviewcontroller is not rotating correctly ) 
Sé que hay una gran cantidad de discusión sobre este tema en el desbordamiento de la pila, pero ninguna de las preguntas tiene una respuesta que funciona para...

3  ¿Es posible ocultar la barra de navegación en un UISPLITVIEWCONTROLLER?  ( Is it possible to hide the nav bar on a uisplitviewcontroller ) 
Tengo una aplicación muy simple de la que quiero usar un UISPLITVIERNVIETRONTROLLER IN. Es tan simple que no quiero que la barra de navegación sea visible en ...

1  Evite que se muestre la vista maestra al arrastrar UIIMAGEVIE, cerca de él en una aplicación IPAD SplitView  ( Prevent the master view to be shown when dragging uiimageview close to it in a i ) 
Mi aplicación de iPad es una especie de juego en el que el usuario tiene que configurar las imágenes en el orden correcto. Por ejemplo, hay cuatro imágenes ...

2  Aplicación de mesa maestra  ( Master table application ) 
Estoy usando una aplicación básica de la tabla maestra de iPad que usa solo la orientación de los retratos. Deseo detener la MasterViewController aparezcan cu...

1  Cómo agregar y guardar Feed RSS en la aplicación basada en Split-View en iPad  ( How to add and save rss feed in split view based app in ipad ) 
He creado iPad de aplicación basada en la vista dividida que está recuperando las fuentes de RSS y el contenido. Ahora quiero agregar una fuente RSS más a mi ...

1  Accediendo a un UITUITWVIEW cuando se interpreta un UINVIGICOCRONTROLLER (en un UisplitViewController)  ( Accessing a uitableview when a uinavigationcontroller gets in the way in a uisp ) 
Tengo un UISPLITVIERNOCONTROLSTROLER QUE SE CONFIGURA ESO SO: "attribute vec4 aPosition;" +9 Cuando intento configurar DetailView en el delegado de UISP...

0  Vista dividida - Contenido de clips XIB rotado  ( Split view rotated xib clips content ) 
Estoy trabajando con una aplicación de iPad de Split View por primera vez. Tengo mi visión de detalles establecida en el constructor de la interfaz (en modo R...

3  Error de empuje de la vista de detalle de UisplitViewController  ( Uisplitviewcontrollers detail view push error ) 
Estoy implementando una aplicación universal usando UISplitViewController para iOS8 y enfrenta un problema extraño con el UINavigation y realmente aprecia...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos