Pregunta

Mi problema es la muestra ... Pero todavía no sé por qué mi punto de vista no empujará a otro punto de vista ...

En primer lugar, poner muchos puntos de vista en NSMutableArray

static NSString *titleKey = @"title";
static NSString *viewControllerKey = @"viewController";

- (void)viewDidAppear:(BOOL)animated {
    self.menuList = [NSMutableArray array];

    FirstView *firstView = [[FirstView alloc]initWithNibName:nil bundle:nil];
    [self.menuList addObject:[NSDictionary dictionaryWithObjectsAndKeys:
                              NSLocalizedString(@"FirstView", @""), titleKey,
                              firstView, viewControllerKey,
                              nil]];
    [FirstView release];


    SecondView *secondView = [[SecondView alloc]initWithNibName:nil bundle:nil];
    [self.menuList addObject:[NSDictionary dictionaryWithObjectsAndKeys:
                              NSLocalizedString(@"SecondView", @""), titleKey,
                              secondView, viewControllerKey,
                              nil]];
    [SecondView release];

De acuerdo ... Esto cómo añadir viewcontroller en una matriz ...

Quiero cuando pulso la celda en la vista de tabla, que se destinará a la vista que quiero mostrar

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    UIViewController *targetViewController = [[self.menuList objectAtIndex: indexPath.row] objectForKey:viewControllerKey];
    targetViewController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
    [[self navigationController] pushViewController:targetViewController animated:YES];
}

Después de pulsar el celular, nada sucede

En primer lugar supongo que podría ser que no se estableció la matriz correctamente

Pero Cuando intento acceder al array

Es realmente algo dentro ...

Este es el resultado:

Log message: MENU LIST (
        {
        title = "FirstView";
        viewController = "<Firstview: 0x5822500>";
    },
        {
        title = "SecondView";
        viewController = "<SecondView: 0x5822870>";
    }
)

No tengo idea de por qué el programa no funcionará ......

¿Alguien tiene alguna idea ???

Es sólo una cosa tan simple, sigue atascado aquí por 3 horas ....

Muchas gracias:)

¿Fue útil?

Solución

En primer lugar es necesario comprobar el tipo de targetViewController a ver si se le está dando la ViewController.If correcta es correcta, entonces

Usted realmente debe comprobar el valor self.navigationController para asegurarse de que no es nil

sospecho que la segunda cosa es el problema.

Otros consejos

Bueno, primero que tengo que decir, bravo, esta es una pregunta desafiante.

M y la certeza de que mi respuesta le ayudará o no, pero sólo escúchame.

cuando se utiliza

UIViewController *targetViewController = [[self.menuList objectAtIndex: indexPath.row] objectForKey:viewControllerKey];

Se le asigna una clase de FirstView tipo o secondview a UIViewController que mi ser el problema.

pero es adecuado como clase padre puede tomar el lugar de la clase hija (suponiendo que la clase 2 ha subclase del UIViewController).

para que pueda colocar un punto de quiebre en

  • (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

y antes de que el control llega al final de la función de lugar el cursor sobre targetViewController y comprobar cuál es su contenido.

si tiene un FirstView o secondview de lo que le mostrará el tipo de variable y el FirstView secondview es.

Con el fin de realizar una acción de empuje con éxito es necesario crear un UINavigationController delegado en su aplicación con un controlador de vista raíz (root = controlador de vista FirstView-> espero que esto es un UIViewController).

Después de hacer esto, en FirstView puede llamar

[[self navigationController] pushViewController:targetViewController animated:YES];

con el fin de empujar otro UIViewController en la pila.

La clase UINavigationController implementa una visión especializada controlador que gestiona la navegación del contenido jerárquico. Esta clase es no destinadas a la creación de subclases. En lugar, utiliza instancias de la misma tal y como son en situaciones en las que desee que su interfaz de usuario de aplicación a reflejar la naturaleza jerárquica de Tu contenido. esta navegación interfaz hace que sea posible presentar sus datos de manera eficiente y hace también que sea más fácil para el usuario navegar ese contenido.

Este es el enlace oficial de los documentos UINavigationController, son útiles. Enlace a la documentación UINavigationController

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