2012-04-25 11 views
9

¿Cómo puedo usar un dentro de un ? A continuación se muestra un ejemplo de lo que estoy tratando de hacer (excepto esto es sólo el UITableview en mi guión gráfico):UITableView dentro de un UIViewController

UITableView inside a UIViewController

He descubierto que tengo que añadir el delegado y la fuente de datos a mi cabecera:

//MyViewController.h 
@interface MyViewController : UIViewController <UITableViewDelegate, UITableViewDataSource> 

En mi archivo de implementación, he añadido los métodos necesarios:

//MyViewController.m 

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { 
    // Return the number of sections. 
    return 1; 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
    return; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    NSLog(@"cellForRowAtIndexPath"); 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"FileCell"]; 

    NSLog(@"cellForRowAtIndexPath"); 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 
    NSArray *fileListAct = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:documentsDirectory error:nil]; 

    cell.textLabel.text = [NSString stringWithFormat:@"%@",[fileListAct objectAtIndex:indexPath.row]]; 

    return cell; 
} 

El delegate, datasource, y UITableView están todos conectados de mi Storyboard:

UITableView Delegate and DataSource in Interface Builder Connections Outlet

no puedo conseguir el TableView para cargar el contenido que le digo que lo haga. Siempre sale en blanco. ¿Por qué el TableView no se llena con el contenido que le digo en el método cellForRowAtIndexPath? ¿Que me estoy perdiendo aqui?

Respuesta

11

Tiene que vincular la fuente de datos y delegar las salidas de la tabla vista en el guión gráfico al controlador de vista. Esto no es opcional Esta es la razón por la cual su tabla está en blanco, nunca está llamando a los métodos de vista de tabla de su controlador de vista. (Puede probar esto estableciendo puntos de interrupción en ellos y viendo que nunca se activen). ¿Qué tipo de errores de compilación está obteniendo?

+0

ya no recibo errores de compilación, pero cuando intento de interactuar con la tabla de la aplicación se estrelló. ¿Y es el método cellForRowAtIndex el lugar correcto para poblar la vista de tabla? –

+0

¿Cuál es el mensaje de error cuando se bloquea? Establezca un punto de interrupción en las excepciones de Objective-C para que pueda averiguar en qué línea se cuelga también. – jsd

+0

Conecté la fuente de datos y delegué las tomas a mi ViewController (correctamente) y ya no recibo errores de compilación o bloqueos. Cuando establezco puntos de interrupción en cellForRowAtIndexPath y numberOfRowsInSection, se encuentran pero su contenido nunca se ejecuta. Además, nunca entra en cellForRowAtIndexPath, este método simplemente se ignora. ¿Por qué está pasando esto? –

1

No devuelve ningún valor válido. ¿Ver el return; sin ningún valor numérico para devolver?

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    return; // it should be return 15; or return self.datasource.count; 
    NSLog(@"numberOfRowsInSection"); 
} 
0

Hace falta un programa para IBOutlet YourTableView, a continuación, conectar a TableView YourTableView

Cuestiones relacionadas