2011-04-29 10 views
11

¿Alguien puede enumerar métodos de delegado y métodos de fuente de datos para UITableView?métodos de delegado y origen de datos para UITableView

¿Los delegados y los métodos de las fuentes de datos son los mismos para UITableView?

+8

¿Alguna vez has oído hablar de docs? –

+0

ni siquiera se molestó en hacer una búsqueda superficial de la documentación. – Jon

+3

¿Por qué esta pregunta existe? ¿Quién lo mantendrá actualizado? La documentación actualizada está disponible públicamente en http://developer.apple.com – CrimsonChris

Respuesta

2

¿Enumerar? No, no son los mismos .. mirada a la documentación .. http://developer.apple.com/library/ios/#documentation/uikit/reference/UITableViewDelegate_Protocol/Reference/Reference.html

http://developer.apple.com/library/ios/#documentation/uikit/reference/UITableViewDataSource_Protocol/Reference/Reference.html

métodos origen de datos se utilizan para generar células tableView, encabezado y el pie antes de que sean los métodos displaying..Delegate proporcionan información sobre estas células, encabezado y el pie, junto con otros controladores de acciones de usuario como la selección de las células y de edición ..

2

No entiendo la última parte de su pregunta.

Hay un gran lugar proporcionado por Apple llamado 'iOS Dev Center' que responderá a casi todas las preguntas que pueda tener sobre el desarrollo de dispositivos iOS. Esta información también está disponible a través de Xcode.

UITableDataSource

UITableViewDelegate

5
tableView:accessoryButtonTappedForRowWithIndexPath: 
    tableView:didDeselectRowAtIndexPath: 
    tableView:didEndEditingRowAtIndexPath: 
    tableView:didSelectRowAtIndexPath: 
    tableView:editingStyleForRowAtIndexPath: 
    tableView:heightForFooterInSection: 
    tableView:heightForHeaderInSection: 
    tableView:heightForRowAtIndexPath: 
    tableView:indentationLevelForRowAtIndexPath: 
    tableView:shouldIndentWhileEditingRowAtIndexPath: 
    tableView:targetIndexPathForMoveFromRowAtIndexPath:toProposedIndexPath: 
    tableView:titleForDeleteConfirmationButtonForRowAtIndexPath: 
    tableView:viewForFooterInSection: 
    tableView:viewForHeaderInSection: 
    tableView:willBeginEditingRowAtIndexPath: 
    tableView:willDeselectRowAtIndexPath: 
    tableView:willDisplayCell:forRowAtIndexPath: 
    tableView:willSelectRowAtIndexPath: 

tienen una look

+0

Haha ... usted los listó ... Pensé en ello primero también ... Bien hecho ... :) – Krishnabhadra

+0

ja, ja ... Vote la respuesta si te gusta ... – Saurabh

38
//_______________________________________________________________________________________________________________ 
// this represents the display and behaviour of the cells. 

@protocol UITableViewDelegate<NSObject, UIScrollViewDelegate> 

@optional 

// Display customization 

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath; 

// Variable height support 

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath; 
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section; 
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section; 

// Section header & footer information. Views are preferred over title should you decide to provide both 

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section; // custom view for header. will be adjusted to default or specified header height 
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section; // custom view for footer. will be adjusted to default or specified footer height 

// Accessories (disclosures). 

- (UITableViewCellAccessoryType)tableView:(UITableView *)tableView accessoryTypeForRowWithIndexPath:(NSIndexPath *)indexPath __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_NA,__MAC_NA,__IPHONE_2_0,__IPHONE_3_0); 
- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath; 

// Selection 

// Called before the user changes the selection. Return a new indexPath, or nil, to change the proposed selection. 
- (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath; 
- (NSIndexPath *)tableView:(UITableView *)tableView willDeselectRowAtIndexPath:(NSIndexPath *)indexPath __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_3_0); 
// Called after the user changes the selection. 
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath; 
- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_3_0); 

// Editing 

// Allows customization of the editingStyle for a particular cell located at 'indexPath'. If not implemented, all editable cells will have UITableViewCellEditingStyleDelete set for them when the table has editing property set to YES. 
- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath; 
- (NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_3_0); 

// Controls whether the background is indented while editing. If not implemented, the default is YES. This is unrelated to the indentation level below. This method only applies to grouped style table views. 
- (BOOL)tableView:(UITableView *)tableView shouldIndentWhileEditingRowAtIndexPath:(NSIndexPath *)indexPath; 

// The willBegin/didEnd methods are called whenever the 'editing' property is automatically changed by the table (allowing insert/delete/move). This is done by a swipe activating a single row 
- (void)tableView:(UITableView*)tableView willBeginEditingRowAtIndexPath:(NSIndexPath *)indexPath; 
- (void)tableView:(UITableView*)tableView didEndEditingRowAtIndexPath:(NSIndexPath *)indexPath; 

// Moving/reordering 

// Allows customization of the target row for a particular row as it is being moved/reordered 
- (NSIndexPath *)tableView:(UITableView *)tableView targetIndexPathForMoveFromRowAtIndexPath:(NSIndexPath *)sourceIndexPath toProposedIndexPath:(NSIndexPath *)proposedDestinationIndexPath;    

// Indentation 

- (NSInteger)tableView:(UITableView *)tableView indentationLevelForRowAtIndexPath:(NSIndexPath *)indexPath; // return 'depth' of row for hierarchies 

@end 
//_______________________________________________________________________________________________________________ 
    // this protocol represents the data model object. as such, it supplies no information about appearance (including the cells) 

@protocol UITableViewDataSource<NSObject> 

@required 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section; 

// Row display. Implementers should *always* try to reuse cells by setting each cell's reuseIdentifier and querying for available reusable cells with dequeueReusableCellWithIdentifier: 
// Cell gets various attributes set automatically based on table (separators) and data source (accessory views, editing controls) 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath; 

@optional 

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView;    // Default is 1 if not implemented 

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section; // fixed font style. use custom view (UILabel) if you want something different 
- (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section; 

// Editing 

// Individual rows can opt out of having the -editing property set for them. If not implemented, all rows are assumed to be editable. 
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath; 

// Moving/reordering 

// Allows the reorder accessory view to optionally be shown for a particular row. By default, the reorder control will be shown only if the datasource implements -tableView:moveRowAtIndexPath:toIndexPath: 
- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath; 

// Index 

- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView;             // return list of section titles to display in section index view (e.g. "ABCD...Z#") 
- (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index; // tell table which section corresponds to section title/index (e.g. "B",1)) 

// Data manipulation - insert and delete support 

// After a row has the minus or plus button invoked (based on the UITableViewCellEditingStyle for the cell), the dataSource must commit the change 
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath; 

// Data manipulation - reorder/moving support 

- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath; 

@end 
+1

Esto debería estar en una esencia :) https://gist.github.com/4479072 –

+0

Esta respuesta no está actualizada. Vaya a http://developer.apple.com para obtener documentación actualizada. – CrimsonChris

39

he preparado una hoja de todos los métodos en delegado y fuente de datos.

UITableViewDelegate methods

1

Ir a la link, describirá acerca de todos los aspectos básicos de UITableView.

métodos primarios de UITableView son:

– tableView:cellForRowAtIndexPath: // método requerido

– tableView:numberOfRowsInSection: // requerida método

– numberOfSectionsInTableView: 

– sectionIndexTitlesForTableView: 

– tableView:sectionForSectionIndexTitle:atIndex: 

– tableView:titleForHeaderInSection: 

– tableView:titleForFooterInSection: 

el que se desea son aquellos a los que debe tener para incluir en el código. No olvide vincular el delegado de la tabla y la fuente de datos con el propietario del archivo.

1

cual sea el método devuelve un valor, que es un método dataSource y el otro método que queda es el método delegado

se dan a continuación

métodos de delegado

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 

datos de origen

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section 
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
1

datos Método Fuente:

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

y

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{} 

método Delegado:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{} 



- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath{} 

Estos son los principales métodos que usamos para hacer la vista mesa de trabajo. Aparte de esto, hay muchos métodos. Lea la documentación de UITableView Delegate y Datasource para conocer más métodos y su funcionamiento.

0
#pragma mark Tableview Delegate Method 

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
    return 1; //count of section 
} 

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

- (UITableViewCell *)tableView:(UITableView *)tableView 
     cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    UITableViewCell *cell = (UITableViewCell *) [tableView dequeueReusableCellWithIdentifier:@"TableviewCell"]; 

    UILabel *lbldescription = (UILabel *)[cell viewWithTag:1]; 

    cell.selectionStyle=UITableViewCellSelectionStyleNone; 
    cell.backgroundColor=[UIColor clearColor]; 
    return cell; 
} 

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath; 
{ 
} 

-(CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath { 
    return UITableViewAutomaticDimension; 
} 

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{ 
    return UITableViewAutomaticDimension; 
} 

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { 

    UITableViewCell *cell = (UITableViewCell *) [tableView dequeueReusableCellWithIdentifier:@"TableviewCell_Header"]; 

    cell.selectionStyle=UITableViewCellSelectionStyleNone; 
    cell.backgroundColor=[UIColor whiteColor]; 

    return cell; 
} 

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section 
{ 
    return 100; 
} 
Cuestiones relacionadas