一個Table View一般要設定其dataSource和delegate.
可以通過Control+drag來設定
並採用兩個協議
@interface SecondViewController : UIViewController<UITableViewDelegate, UITableViewDataSource>
UITableViewDelegate協議定義的方法中常用的有:
// Called after the user changes the selection.- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath;// 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;// Variable height support- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;
UITableViewDataSource協議定義的方法中常用的有:
@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;
注意上面的@required -- 這兩方法是必須實現的,否則程式會出錯.
如何設定Table View分組顯示?
實現下面這個函數:
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section { NSArray *keys = [[[self artists] allKeys] sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)]; return [keys objectAtIndex:section];}
這裡的artists定義為NSDictionary *artists;
上面這個函數實現了按artists中的key來分組.
實現如下風格的table view
1 首先要設定Style 為grouped
2 實現如下函數
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
設定每個section的標題, 比如上面的UIButton, UIButtonTypeRoundedRect就是Section的標題.
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
設定每個Section裡面有多少行, 中這個值為2
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
總共有多少個Section
上面這些函數要根據你實際要顯示的資料來實現.