Begin Main Content

Buenos días, He estado trabajando aun en la tarea 3, no la pude subir debido a que no he sido capaz de que aparezca la gráfica. He hecho que aparezcan los ejes, pero nada de gráfica. Basicamente he creado un segundo MVC compuesto de un GraphView, GraphViewControler y como modelo hay un @property en el GraphViewControler que se supone debe recibir un program vía segue. En el GraphView.h tengo esta proerty @property (nonatomic, weak) IBOutlet id <graphviewdatasource> dataSource; y el GraphViewController es su datasource @interface GraphViewController() <graphviewdatasource>

Hice un segue graficamente desde el botón Graph, que se llama Show Graph hacia la vista en el storyboard.

El prepareForSegue esta en el CalculatorViewContoller

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { NSLog(@"segue se llama");

if ([segue.identifier isEqualToString:@"Show Graph"]) {
    NSLog(@"segue sent");
    [segue.destinationViewController setProgram:self.brain.program]; 
    }

} Puse un par de lineas a la consola, una cuando se llama el prepareForSegue y la otra si el identificador del Segue es "Show Graph", la primera se muestra en la consola pero no la segunda. Si no se entra allí lógicamente no estaré recibiendo el program y no habrá nada en la gráfica ara y que es lo que veo en la consoloa vía NSLog. el valor de y siempre es null.

Que estoy haciendo mal? Los ejes si me aparecen y he probado también dar un valor fijo a Y y si me lo gráfica.

Alguien me puede ayudar?

preguntado 27 Jul '12, 13:14

rguifa%40yahoo.com's gravatar image

rguifa@yahoo...
6381115
accept rate: 0%


En el caso de la tarea 3 creo que no seria buena idea hacer el segue desde el boton via storyboard (graficamente) ya que también se requiere que funcione en Ipad y como vimos con Psycologist, si ya tenemos la vista en pantalla no siempre tiene sentido hacer un segue.

Prueba esto:

  1. Elimina el segue hecho gráficamente desde el botón, y haz uno nuevo desde el contolador hasta la vista, asi hacemo el segue generico que manipularemos via código en el controlador. Le creas un identificador e este segue.
  2. Crea graficamente un target action para el boton de Graficar.
  3. Si aun estas en la parte solo Iphone de la tarea dentro del target action solo hacer el segue manualmente:

    [self performSegueWithIdentifier:@"ShowGraphic" sender:self];

  4. Si ya tienes también el storyboard para ipad listo, entonces en el target action debes preguntar si esta presente el ViewController que maneja el gráfico (en mi caso graphicViewController), si esta es porque estamos en ipad, entonces solo le pasas el parámetro program que requiere. Si no esta entonces estamos en iphone hacemos el segue manualmente. Te quedaria algo así, claro con tus nombres de variable y segue...

    (IBAction)graphPressed:(id)sender { // Si esta en SplitView(ipad) solo le paso el parametro si esta en iphone hago el segue manualmente if ([self graphicViewController]) { [[self graphicViewController] setProgram:self.brain.program]; } else { [self performSegueWithIdentifier:@"ShowGraphic" sender:self]; } }

  5. En prepareForSegue, que se ejecutara solo en la version para iphone al momento de hace rle segue manualmente le indicamos al controller cual es el progeam.

[segue.destinationViewController setProgram:self.brain.program];

Saludos.

enlace permanente

respondido 27 Jul '12, 16:11

gonzalec%40gmail.com's gravatar image

gonzalec@gma...
206348
accept rate: 4%

editó 27 Jul '12, 16:14

Hice lo que me sugeriste y siempre obtengo el mismo resultado. Aparece la vista de la gracia con los ejes dibujados, pero ninguna gráfica en el. si ves, agregue un mensaje a log al entrar a la llamada de segué, pero nunca se imprime al log, y no entiendo por que no aparece. NSLog(@"segue sent"); Si yo le pogo un valor cualquiera a Y entonces si dibuja la linea. Puse una linea NSLog también donde se llama mi método para calcular el valor de y y me dice que el contenido de esta es nulo. No se que estoy haciendo mal.

(27 Jul '12, 17:08) rguifa@yahoo...

Puse una un mensaje a la consola en el método setProgram que esta en mi GraphViewController y así saber que estoy llegando allí. El mensaje no aparece. Creo que mi problema esta en como decirle al segué cual es su destino. Lo que me parece raro es que todo lo demás aparece, o sea que el segué se esa ejecutando aparentemente, solo que en mi setProgram no he de estar recibiendo nada y por eso hay ejes pero no gráfica. Ya estoy un poco frustrado con esto y el demo lo tengo que hacer encima de ese proyecto.

(27 Jul '12, 17:49) rguifa@yahoo...

Trata de seguir linea a linea, empieza graficando algo a la fuerza asi sabes que dibujas bien la grafica, luego haces el codigo para recibir el program que viene, así sabras de que lado esta tu error.

Yo tenia un error igual y era que no estaba mandando el program correctamente.

Tambien asegurate de llamar al NeedDisplay para que dibuje la grafica en la vista.

enlace permanente

respondido 27 Jul '12, 19:20

cuevasimeryjc%40gmail.com's gravatar image

cuevasimeryj...
1.0k81420
accept rate: 5%

En el prepareForSegue que tenias no es necesario preguntar que segue es porque es solo uno.

Elimina la pregunta :

if ([segue.identifier isEqualToString:@"Show Graph"]) {
    NSLog(@"segue sent");
    [segue.destinationViewController setProgram:self.brain.program]; 
}

y deja directamente:

 [segue.destinationViewController setProgram:self.brain.program];

y cuando se presione el botón de Graficar en el CalculatorViewController se debe ejecutar:

[self performSegueWithIdentifier:@"Show Graph" sender:self];

En el GraphViewController debes tener la propiedad program y y su setter.

Como comento el compañero cuevasimeryj asegurate de llamar a setNeedsDisplay y de tener program.

- (void)setProgram:(id)program {
if(_program != program){
        _program = program;
    }
    // Indico que se debe actualizar la vista
    [self.graphicView setNeedsDisplay];
}
enlace permanente

respondido 27 Jul '12, 20:39

gonzalec%40gmail.com's gravatar image

gonzalec@gma...
206348
accept rate: 4%

He seguido las sugerencias y obtengo los mismos resultados. Creo que mi problema debe estar cuando trato de enviar el program. No tengo idea en realidad de como encontrar el problema. Si le doy valores manualmente a y, entonces si aparece la gráfica.

(28 Jul '12, 00:43) rguifa@yahoo...

Después de varios pleitos ha funcionado...gracias por la ayuda.

(28 Jul '12, 02:40) rguifa@yahoo...
USTED DEBE ACCEDER AL SISTEMA PARA PODER RESPONDER O REALIZAR UNA PREGUNTA.

Seguir esta pregunta

Por Email:

Una vez que entres podrás suscribirte desde aquí para recibir actualizaciones

Por RSS:

Respuestas

Respuestas y Comentarios

Trucos del editor

  • *cursiva* o _cursiva_
  • **negrita** o __negrita__
  • enlace:[texto](http://url.com/ "Pregunta")
  • imagen?![alt texto](/path/img.jpg "Pregunta")
  • lista numerada: 1. Foo 2. Bar
  • Para añadir un salto de línea simplemente añade dos espacios donde desearías que estuviera el salto de línea.
  • se permite código HTML básico

Etiquetas de la pregunta:

×69
×6
×3

pregunta realizada: 27 Jul '12, 13:14

pregunta vista: 674 veces

última modificación: 28 Jul '12, 02:40