fs_tigre
fs_tigre

Reputation: 10738

Understanding what happens and why you need a delegate and source for table views

I have been practicing with table views and I know how to create them but I would like to have a better understanding about delegate and source when creating table views.

Can someone explain the need for a delegate and a source when creating table views?

Why do you need them?

What is happening when you connect delegate and source to File’s Owner or ViewController and why they need to be connected?

I guess I need a general explanation about delegates and source and what happens when you connect them to File’s Owner or ViewController?

Upvotes: 1

Views: 182

Answers (5)

erdikanik
erdikanik

Reputation: 744

If your programming language doesn't support multiple inheritance, you must use delegate method. When you implement delegate method, you can use object functions such as super class. Example :

    // define tableview row count
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return 1;
}

// define tableview height
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {

}

// define specific tableview cell
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = MyCell();
    return cell;
}

Upvotes: 1

iOS_Raj
iOS_Raj

Reputation: 200

Delegate:- A delegate is an object that acts on behalf of, or in coordination with, another object when that object encounters an event in a program. The delegating object is often a responder object—that is, an object inheriting from NSResponder in AppKit or UIResponder in UIKit—that is responding to a user event. The delegate is an object that is delegated control of the user interface for that event, or is at least asked to interpret the event in an application-specific manner.

Data Source:- A data source is like a delegate except that, instead of being delegated control of the user interface, it is delegated control of data. A data source is an outlet held by NSView and UIView objects such as table views and outline views that require a source from which to populate their rows of visible data. The data source for a view is usually the same object that acts as its delegate, but it can be any object. As with the delegate, the data source must implement one or more methods of an informal protocol to supply the view with the data it needs and, in more advanced implementations, to handle data that users directly edit in such views.

For Detail info goto http://developer.apple.com/library/ios/#documentation/general/conceptual/CocoaEncyclopedia/DelegatesandDataSources/DelegatesandDataSources.html

Upvotes: 2

Buntylm
Buntylm

Reputation: 7373

The UITableViewDataSource protocol is adopted by an object that mediates the application’s data model for a UITableView object. The data source provides the table-view object with the information it needs to construct and modify a table view.

Example:

Whereas a data source type object gives data to another object. For example again, the UITableViewDataSource protocol has methods such as cellForRowAtIndexPath and numberOfRowsInSection dictating what should be displayed in the table

The UITableViewDelegate of a UITableView object must adopt the UITableViewDelegate protocol. Optional methods of the protocol allow the delegate to manage selections, configure section headings and footers, help to delete and reorder cells, and perform other actions.

Example : 

A delegate type object responds to actions that another object takes. For example, the UITableViewDelegate protocol has methods such as didSelectRowAtIndexPath for performing actions upon a user selecting a particular row in a table.

Upvotes: 1

Abhishek Bedi
Abhishek Bedi

Reputation: 5451

You dont need to make any connections if you are happy to write the following code:

tableview.delegate=self;
tableview.dataSource=self;

Upvotes: 1

trojanfoe
trojanfoe

Reputation: 122391

The delegate and data sources allow the tableview to conform to the MVC design pattern, which is a recurring design pattern in Cocoa and Cocoa Touch.

The TableView itself provides the [V]iew part and the delegate provides the [C]ontroller part while the data source provides the [M]odel part.

When you connect the delegate and datasource in the NIB file you are creating this connection visually; you can just as easily do it programmatically.

Upvotes: 9

Related Questions