人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

(iOS7)Table Viewの一部のCellの罫線(セパレート)を削除したい

Table View上の特定のCellの上下の罫線(セパレート)を削除したいのですが、
下記のコードでは全てのCellのセパレートが消えてしまいます。
特定のCellのみセパレートを削除する方法はないのでしょうか?

[self.tableView setSeparatorStyle:UITableViewCellSeparatorStyleNone];

宜しくお願いします。



●質問者: ankomoti3260
●カテゴリ:コンピュータ インターネット
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● bg5551
●100ポイント ベストアンサー

こちらの方法ではいかがでしょうか。

http://umeji.blogspot.jp/2010_09_01_archive.html


ankomoti3260さんのコメント
コメントありがとうございます。 ご紹介いただきました方法ですと、全ての境界線が削除されてしまいます。 質問内容がわかりにくくすみませんでした。 やりたかったのは、2セクションのうち2つ目のセクションのセルの境界線を削除したく、fiwaさんご紹介のコードから下記のコードで出来るようになりました。 - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 2; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { if( section == 0){ return 2; }else{ return 1; } return 1; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { NSString *cellIdentifier = @"Cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier]; if (!cell) { // yes // セルを作成 cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier]; } //cell.separatorInset = UIEdgeInsetsMake(0,10000,0,0); if(indexPath.section == 0){ if (indexPath.row == 0) { UIView *line = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 1)]; line.backgroundColor = [UIColor colorWithRed:0.82f green:0.82f blue:0.82f alpha:1.0f]; [cell addSubview:line]; //[cell bringSubviewToFront:line]; } else if (indexPath.row == 2 - 1) { UIView *line = [[UIView alloc] initWithFrame:CGRectMake(21, 0, 320, 1)]; line.backgroundColor = [UIColor colorWithRed:0.82f green:0.82f blue:0.82f alpha:1.0f]; [cell addSubview:line]; //[cell bringSubviewToFront:line]; UIView *lineBottom = [[UIView alloc] initWithFrame:CGRectMake(0, 43, 320, 1)]; lineBottom.backgroundColor = [UIColor colorWithRed:0.82f green:0.82f blue:0.82f alpha:1.0f]; [cell addSubview:lineBottom]; //[cell bringSubviewToFront:lineBottom]; } } cell.textLabel.text = @"test"; return cell; } - (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { if(indexPath.section == 1){ cell.backgroundColor = [UIColor clearColor]; } }

質問者から

最終的には下記のコードで特定のセクション内のセルの境界線を削除できるようになりました。

{

return 2;
}

{

if( section == 0){
return 2;
}else{
return 1;
}
return 1;
}

{
NSString *cellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];

if (!cell) { // yes
// セルを作成
cell = UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
}

//cell.separatorInset = UIEdgeInsetsMake(0,10000,0,0);

if(indexPath.section == 0){
if (indexPath.row == 0) {
UIView *line = UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 1)];
line.backgroundColor = [UIColor colorWithRed:0.82f green:0.82f blue:0.82f alpha:1.0f];
[cell addSubview:line];
//[cell bringSubviewToFront:line];
} else if (indexPath.row == 2 - 1) {
UIView *line = UIView alloc] initWithFrame:CGRectMake(21, 0, 320, 1)];
line.backgroundColor = [UIColor colorWithRed:0.82f green:0.82f blue:0.82f alpha:1.0f];
[cell addSubview:line];
//[cell bringSubviewToFront:line];

UIView *lineBottom = UIView alloc] initWithFrame:CGRectMake(0, 43, 320, 1)];
lineBottom.backgroundColor = [UIColor colorWithRed:0.82f green:0.82f blue:0.82f alpha:1.0f];
[cell addSubview:lineBottom];
//[cell bringSubviewToFront:lineBottom];
}
}

cell.textLabel.text = @"test";
return cell;
}


{
if(indexPath.section == 1){
cell.backgroundColor = [UIColor clearColor];

}
}


関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ