2012-05-27 8 views
31

私はtableViewに6行のテキストを表示させたいとします。私が知る限り、numberOfSectionsInTableView:numberOfRowsInSection:が正しく設定されています。以下のサンプルコードを参照してください:UITableViewがnumberOfRowsInSectionで指定された数よりも多くの行を表示しています:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{ 
    // Return the number of sections. 
    return 1; 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ 
    // Return the number of rows in the section. 
    return 6; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath{ 

    static NSString *CellIdentifier = @"Cell"; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) { 
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 
    } 

    cell.textLabel.text = @"Example"; 

    return cell; 
} 

問題は、存在しない/存在してはいけない行の行を示しています。私は過去6行目を示すラインを取り除くにはどうすればよい

enter image description here

+3

これは、スクロールするために必要とされるよりも少ない行を持つすべてのプレーンテーブルビューのデフォルトの動作です、行とセクションの数を設定するだけでは役に立ちません。あなたは別の方法を見つける必要があります... – BoltClock

答えて

55

これを行うのgenerally accepted wayのような、CGRectZeroのフレームサイズとフッターのビューを追加することです:

[tableView setTableFooterView:[[UIView alloc] initWithFrame:CGRectZero]] 

何これが行うことがあることをテーブルに伝えていますフッターが表示され、区切り線の表示が停止します。しかし、フッタにはフレームとしてCGRectZeroがあるため、何も表示されないので、視覚効果はセパレータが単に停止することです。

+0

余分な細胞をどのように取り除くことができますか?私はそれらを見せたくありません - 私はむしろセクションのヘッダーに示す灰色の背景を表示したいと思います。 UITableViewStyleGroupedの場合は –

0

あなたはの線に沿って何かを行うことができます:

NSIndexPath *indexPath = [NSIndexPath indexPathForRow:7 inSection:0]; 
[self.mytableView cellForRowAtIndexPath:indexPath].hidden = YES; 

Imは必ずいくつかのより良い方法があるが、これは心に来た最初のものです。

+0

これは愚かな質問なら私を許してください、しかし、私はこのコードを置くことを提案していますか? (どのような方法で?) – tarheel

+0

どこにでも当てはまるようです –

0

最後の行の下に表示される明るいグレーの線を参照している場合は、単にUITableViewが行のセパレータを描画するデフォルトの方法です。

Interface Builder(下の画像を参照)でセパレータスタイルを変更して、好みのセパレータスタイルを選択してみることもできます。

enter image description here enter image description here

+0

提案に感謝します。しかし、存在する行に対しては区切り記号が必要ですが、残りの部分は表示されません。 – tarheel

0

あなたは最後の行を過ぎて見たいと言っていませんでした。ウィンドウの背景を見たい場合は、表示したい行の数を表示するのに十分なだけのUIViewにテーブルビューを埋め込みます。スクロールせずにさらに多くの行を表示する場合は、行数に基づいてビューを含むビューのサイズを調整する必要があります。

7

テーブルビューの高さのためです。あなたが持っている天気を書く

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ 

//セクションの行数を返します。 リターン6; }

しかし、その表示行は、表ビューのサイズに従います。表示したくない場合は、この余分な線を作成してください。UITableViewスタイルをPlain to Groupedにします。プログラムによってこの使い、それを削除するには

+0

+1、UITableViewStyleGroupedの場合は –

+0

-1です。これは、質問者が求めたものではなく、テーブル全体の表示に影響します。区切り文字を削除すると、スタイルを変更する副作用があります。グループ化されたスタイルが、後のバージョンで追加の区切り文字を含むように変更された場合、このスタイルの変更は問題になります。 – Tim

+0

いいです。ニース、簡単、迅速な修正! –

-1

[yourTableView setSeparatorStyle:UITableViewCellSeparatorStyleNone];

+0

これはすべてのセル間の区切り線を削除します –

5

ショートとシンプルな答えを..

self.tableView.tableFooterView = [UIView new]; 
20

スウィフトバージョン

最も簡単な方法は、tableFooterViewプロパティを設定することです:

override func viewDidLoad() { 
    super.viewDidLoad() 
    // This will remove extra separators from tableview 
    self.tableView.tableFooterView = UIView(frame: CGRect.zero) 
} 
+2

Swift 3: '= UIView(フレーム:CGRect.zero)' – fbynite

関連する問題