UITableView 兩三事 (未完)
- 指定 Data Source
(tbd) - Handle
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView.
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath - TableView 風格
- UITableViewStyleGrouped - UITableViewCell 風格
- UITableViewCellStyleDefault
- UITableViewCellStyleValue1
- UITableViewCellStyleValue2
- UITableViewCellStyleSubtitle - 建議 在 cellForRowAtIndexPath 中指定 cell reuse ,附帶一提 雖然指定為UITableViewCellStyleDefault 但也可以將附帶元件放到指定的座標,下面提供範例
static NSString *reuseCellName= @"reuseCellName";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:reuseCellName];
if (cell == nil) {
cell = [[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:reuseCellName] autorelease];
} - 依序取出 NSMutableDictionary 裡面內容
通常會把資料存在 NSMutableArray/NSArray 透過 indexPath.row 順序抓出,不過有可能會把資料存在 NSMutableDictionary/NSDictionary 這樣抓資料的話要透過NSUInteger row = [indexPath row];
NSArray *keys = [fileFromDictionary allKeys];
id key = [keys objectAtIndex:row];
NSString *filename = [fileFromDictionary objectForKey:key]; - 在 xcode4 指定圖示的方式要透過 UIImageView,不建議再用 cell.image
UIImageView *imageView = [[UIImageView alloc]
initWithImage:[UIImage imageNamed:@"dialog_btn_bg_blue.png"]];
imageView.contentMode = UIViewContentModeScaleAspectFit;
[cell.imageView setImage:imageView.image]; - 系統已內建將顯示圖示改為圓角的功能
cell.imageView.layer.masksToBounds = YES;
cell.imageView.layer.cornerRadius = 8.0; - cell.textLabel.text 中指定文字和圖形距離,如果不事差太遠的話,前面加空白是個簡單的作法
// keep distance from image
cell.textLabel.text = @" Gamepad profile name";
較為正式的作法請參考 法一 法二 - 在 UITableViewCellStyleDefault 但也可以將附帶元件放到指定的位置,只要將做出來的元件加到 cell.contentView ,附帶一提 以下的 UIBButton 使用使用者自定底色
// Button
UIImage *buttonImg = [UIImage imageNamed:@"dialog_btn_bg_blue.png"];
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button setFrame:CGRectMake(6 + 98 + 281, 22.0f, 50.0f, 29.0f)];
[button setBackgroundImage:buttonImg forState:UIControlStateNormal];
[button setTitle:@"Load" forState:UIControlStateNormal];
[button.titleLabel setFont:[UIFont fontWithName:@"Arial-BoldMT" size:12]];
[button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
[button addTarget: self action: @selector(doSomething:) forControlEvents: UIControlEventTouchDown];
[button setTag: indexPath.row];
[cell.contentView addSubview: button];
[cell.contentView bringSubviewToFront:button];
[buttonImg release]; - 去除邊框
separatorColor=[UIColor clearColor];
http://blog.csdn.net/zhouhuishine/article/details/5715556 - 讓選定的項目不要有特殊顏色
cell.selectionStyle = UITableViewCellSelectionStyleNone;
- 當 didSelectRowAtIndexPath 卻要更改其他的 cell
- Table/Cell refresh
- Table: [tableView reloadData];
- Cell: [cell setNeedsLayout]; - TDBadgedCell
https://github.com/tmdvs/TDBadgedCell/wiki/using-the-class
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath |