This document provides an overview of table views in iOS application development. It discusses the key components of a table view, including the table view object itself, table view cells, and the data source and delegate protocols. It explains that the table view displays data, each cell represents a row, and the data source provides the data and controls the table view's appearance. It also covers common table view methods, configuring cell properties like the background color and accessories, and how to create a basic table view application.
2. About Table Views
? UI Component that presents data in scrollable
list.
Holds rows that may divided into sections
? Many purposes
¨C Navigate data
¨C Present data
¨C Selectable list of opFons
? Two styles: plain or grouped
5. Table Views and Table View Cells
? A table view is the view object that displays a table¡¯s data and is an
instance of the class UITableView.
? Each visible row of the table is implemented by the class
UITableViewCell.
? So, a table view is the object that displays the visible part of a
table, and a table view cell is responsible for displaying a single row
of the table
6. UITableViewCell
? Each UITableViewCell object can be configured
with an image, some text, and an optional
accessory icon, which is a small icon on the
right side
7. UITableViewDataSource Protocol
? 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.
? As a representative of the data model, the data source supplies
minimal information about the table view¡¯s appearance
? The table-view object¡¯s delegate¡ªan object adopting the
UITableViewDelegate protocol¡ªprovides that information.
? The required methods of the protocol provide the cells to be
displayed by the table-view as well as inform the UITableView
object about the number of sections and the number of rows in
each section.
? The data source may implement optional methods to configure
various aspects of the table view and to insert, delete, and reorder
rows.
8. UITableViewDataSource required
instance methods
? 1. tableView:cellForRowAtIndexPath:
? This methods asks the data source for a cell to insert it in a particular
location in the table view. Syntax for method isgiven by:
? - (UITableViewCell *)tableView:(UITableView
*)tableViewcellForRowAtIndexPath:(NSIndexPath *)indexPath
? Parameters: 1.tableView A table-view object requesting the cell.
2.indexPath An index path locating a row in tableView.
? Return Value:Anobject inheriting from UITableViewCell that the table view
can use for the specified row. An assertion is raised if you return nil.
? Discussion: The returned UITableViewCell object is frequently one that the
application reuses for performance reasons. You should fetch a previously
created cell object that is marked for reuse by sending a
dequeueReusableCellWithIdentifier: message to tableView. Various
attributes of a table cell are set automatically based on whether the cell is
a separator and on information the data source provides, such as for
accessory views and editing controls.
10. UITableViewDelegate Protocol
? The delegate 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.
12. Creating a Table View Application
?
?
?
Create empty Application
Set root view controller
Add these protocols to BIDTableViewController.h<UITableViewDataSource,
UITableViewDelegate>
? Drag Table View to the view from Object Library
? Connect Table View With File Owner
? Connect delegate and data source with File owner from Connection Inspector
? Create and Array
? Initiate array in viewDidLoad method in BIDTableViewController.m file
? add Method: - (NSInteger)tableView:(UITableView *)tableView
numberOfRowsInSection:(NSInteger)section
? Add Method: - (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath
13. Explaining the Methods
?
?
?
?
?
?
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath
This method is called by the table view when it needs to draw one of its rows.
static NSString *SimpleTableIdentifier = @"SimpleTableIdentifier"
This string will be used as a key to represent the type of our table cell. Our table
will use only a single type of cell.
A table view can display only a few rows at a time on the iPhone¡¯s small
screen, but the table itself can conceivably hold considerably more. Remember
that each row in the table is represented by an instance of UITableViewCell, a
subclass of UIView, which means each row can contain subviews. With a large
table, this could represent a huge amount of overhead if the table were to try to
keep one table view cell instance for every row in the table, regardless of whether
that row was currently being displayed.
Instead, as table view cells scroll off the screen, they are placed into a queue of
cells available to be reused. If the system runs low on memory, the table view will
get rid of the cells in the queue. But as long as the system has some memory
available for those cells, it will hold on to them in case you want to use them again.
14. Explaining the Methods
?
?
?
?
Every time a table view cell rolls off the screen, there¡¯s a pretty good chance that
another one just rolled onto the screen on the other side. If that new row can just
reuse one of the cells that has already rolled off the screen, the system can avoid
the overhead associated with constantly creating and releasing those views. To
take advantage of this mechanism, we¡¯ll ask the table view to give us a previously
used cell of the specified type. Note that we¡¯re making use of the NSString
identifier we declared earlier. In effect, we¡¯re asking for a reusable cell of type
SimpleTableIdentifier.
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:
SimpleTableIdentifier];
Now, it¡¯s completely possible that the table view won¡¯t have any spare cells (when
it¡¯s being initially populated, for example), so we check cell after the call to see
whether it¡¯s nil. If it is, we manually create a new table view cell using that
identifier string. At some point, we¡¯ll inevitably reuse one of the cells we create
here, so we need to make sure that we create it using SimpleTableIdentifier.
if (cell == nil) { cell = [[UITableViewCell alloc]
initWithStyle:UITableViewCellStyleDefault reuseIdentifier:SimpleTableIdentifier];
}
15. Displaying Data in UITableViewCell
? We now have a table view cell that we can return for the table view to use.
So, all we need to do is place whatever information we want displayed in
this cell. Displaying text in a row of a table is a very common task, so the
table view cell provides a UILabel property called textLabel that we can set
in order to display strings. That just requires getting the correct string from
our listData array and using it to set the cell¡¯s textLabel.
? To get the correct value, however, we need to know which row the table
view is asking for. We get that information from the indexPath's row
property. We use the row number of the table to get the corresponding
string from the array, assign it to the cell¡¯s textLabel.text property, and
then return the cell.
? To get the correct value, however, we need to know which row the table
view is asking for. We get that information from the indexPath's row
property. We use the row number of the table to get the corresponding
string from the array, assign it to the cell¡¯s textLabel.text property, and
then return the cell.
? cell.textLabel.text = self.dwarves[indexPath.row]; return cell;
16. Adding an Image
? Each cell has an imageView property.
? Each imageView has an image property, as well as a highlightedImage
property. The image appears to the left of the cell¡¯s text and is replaced by
the highlightedImage, if one is provided, when the cell is selected.
? You just set the cell¡¯s imageView.image property to whatever image you
want to display.
? Add following code in- (UITableViewCell *)tableView:(UITableView
*)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPathmethohd ,
the code is :
? Adding Normal image:
? UIImage *image = [UIImage imageNamed:@"normal.png"];
? cell.imageView.image = image;
? Adding highlighted image:
? UIImage *image = [UIImage imageNamed:@"highlighted.png"];
17. Choosing Accessory Type
? Add following code in same function:
? cell.accessoryType =
UITableViewCellAccessoryDisclosureIndicator
;
? You Can also give custom image to the
accessorindicator.To do so add follwing code.
? cell.accessoryView = [[UIImageViewalloc]
initWithImage:[UIImageimageNamed:@"disc
.png"]];
18. Changing Background Color of the
Selected Cell
? To change the background color of a selected
Cell we do so.
? UIView *selectedBackgroundViewForCell =
[UIView new];
[selectedBackgroundViewForCellsetBackgrou
ndColor:[UIColorblackColor]];
cell.selectedBackgroundView
=selectedBackgroundViewForCell;
19. Changing Font Colors and Font style
and Font Size
?
?
?
?
Setting Text color for cell Text Label
cell.textLabel.textColor=[UIColorblackColor];
Setting Text color when cell is selected
cell.textLabel.highlightedTextColor =
[UIColorwhiteColor];
? setting font and text size
? cell.textLabel.font =
[UIFontfontWithName:@"Times New Roman"
size:18.0f];
20. Setting Table View Background Color
? Make an Outlet of Table and Connect it with the
table in interface Builder.
? Synthesize the table outlet
? First set cell color to clear color as in order to
enable table background color work.
? Cell.backgroundcolor=[UIColorclearColor];
? Then in viewDidLoadMethod add follwing code
? [table setBackgroundColor:[UIColor
colorWithRed:(255/255.0) green:(193/255.0)
blue:(37/255.0) alpha:1]]
21. Setting Row Height of the Table View
Cell
? We have a special method to accomplish this task
? Add this method to BIDTableViewcontroller.mfile
? Add the following code which includes method and
expected row height.
? - (CGFloat)tableView:(UITableView *)tableView
heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return 70;
}
22. Setting indent Level
? We again have a special method to add indent
level to each row of UITableView.
? Method and Code is given by. Add in same class
as did in last slide
? -(NSInteger)tableView:(UITableView
*)tableViewindentationLevelForRowAtIndexPat
h:(NSIndexPath *)indexPath
{
return indexPath.row;
}