2012-06-04 70 views
2

我在一個Nib上使用了一個UITableView控件,並將委託/數據源設置爲我的控制器,其中「表數據」數組僅被初始化爲2個項目。 但是,在模擬器中運行時,我看到在表視圖中呈現額外的空行。如何讓UITableView只渲染兩行?只有兩行UITableView

謝謝!

+0

能否請您粘貼' - (NSInteger的)numberOfSectionsInTableView:(UITableView的*)tableView'和' - (NSInteger的)的tableView:(UITableView的*)的tableView numberOfRowsInSection:(NSInteger的)section'代碼。你使用分組表格視圖嗎? – sn3ek

+1

你能告訴我你的代碼嗎?你如何將數據添加到你的單元格? – Hosni

回答

0

您需要確保您使用的數組數作爲該節中的單元格數。

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
    return [myArray count]; 
} 
+1

是的,我使用這個值,但是在模擬器中有更多的行渲染。你可以試一試簡單的例子。 –

+1

如果你使用你的數組數,你確定只有2個對象?不可能有比你在'numberOfRowsInSection'中定義的更多的單元:' – WrightsCS

+0

顯示你的UITableView代碼。 – WrightsCS

-1

您可以將表視圖的框架大小減小到2 * cellHeight。

或者任何必要的高度。所以說,每個單元的高度爲44個像素,並且只有一個部分,所以沒有章節標題,你會怎麼做:

self.tableView = [[UITableView alloc] 
    initWithFrame:CGRectMake(x-coord, y-coord, width, 88) 
    style:UITableViewStylePlain]; 

這應該只顯示2個格,假設他們在每個高度44個像素。

+0

另外,你可以設置你的表進行分組,然後禁用背景:self.tableView.backgroundColor = [UIColor clearColor],如果在iPad上self.tableView.backgroundView = nil – bgoers

-1

您可以從您的viewDidLoad調用這個方法:

- (void) addFooter 
{ 
UIView *v = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 10)]; 
v.backgroundColor = [UIColor clearColor]; 
[self.tableView setTableFooterView:v]; 
} 
+0

添加頁腳視圖必須做什麼正在生產的行數? – WrightsCS

+1

java_pill沒有問如何產生只有2行,java_pill是問如何擺脫這樣一個事實,即默認情況下UITableView用行來填充包含UIView而不管內容如何。這解決了這個問題。 – tarheel

+0

我認爲你需要再次閱讀這個問題。 **但是,在模擬器中運行時,我看到在表視圖中顯示了額外的空行** – WrightsCS

2

我有一個類似的問題,如何只顯示包含數據的單元格的分隔符。 tableView呈現儘可能多的行,因爲它可以放入分配給它的區域(寬度和高度)。您在numberOfRowsInSection中指定的號碼僅用於確定應撥打cellForRowAtIndexPath多少次。

爲了克服分隔線空單元我做了以下的渲染:

  1. 整個的tableView禁用分隔符。您可以在「檢查器」的「界面」構建器中通過調用[yourTableView setSeparatorStyle:UITableViewCellSeparatorStyleNone];來完成該工作。

  2. 在你的cellForRowAtIndexPath裏面你用table填充你的tableview創建一個新的UIView並將它設置爲該單元格的子視圖。這個觀點的背景是淺灰色和略帶透明的。可以做到這一點與以下操作:

    UIView *separatorView = [[UIView alloc] initWithFrame:CGRectMake: 
               (0, cell.frame.size.height-1, 
                cell.frame.size.width, 1)]; 
    [separatorView setBackgroundColor:[UIColor lightGrayColor]]; 
    [separatorView setAlpha:0.8f]; 
    [cell addSubView:separatorView]; 
    

    這種觀點的寬度爲1個像素,其是相同的默認的分隔符,它運行該單元的長度,在底部。

既然你在numberOfRowsInSection這些子視圖將只用於擁有的數據,應該有一個分離的細胞創建指定的cellForRowAtIndexPath僅稱爲頻繁。

希望這會有所幫助。

0

設置

urtableview.frame=(x,y,width,[rowheight * num of rows]) 
0

如果你不需要的部分或頁腳,把桌上的一個空的腳註。

在viewDidLoad中添加

tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero]; 

How to remove empty cells in UITableView?

另一種方式來完成,這是返回一個空頁腳視圖。如果您需要上一節的頁腳,這特別有用。

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section { 
    return [[UIView alloc] initWithFrame:CGRectZero]; 
} 

最後,這裏是另外一個鏈接,用其他方法來完成這個。

Eliminate extra separators below UITableView