2013-05-16 122 views
1

我有一個自定義UITableViewCell。這些有以下問題:用戶界面問題與定製UITableViewCell

  1. 刪除按鈕太右,重疊我的背景。我想設置一個插圖,以便它向左移動一點,然後看起來很棒。

Delete button overlapping

藍色的高亮顯示狀態橫跨屏幕的整個寬度,我想它只是我的曲格背景的邊界內進行設置。

Highlighted state

有沒有辦法來解決這兩個問題?謝謝。

編輯:我的代碼如下設置背景(只是一個自定義的方法):

- (UIImage *)cellBackgroundForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    NSInteger rowCount = [self tableView:[self tableView] numberOfRowsInSection:0]; 
    NSInteger rowIndex = indexPath.row; 
    UIImage *background = nil; 

    if (rowIndex == 0) { 
     background = [UIImage imageNamed:@"cell_top.png"]; 
    } else if (rowIndex == rowCount - 1) { 
     background = [UIImage imageNamed:@"cell_bottom.png"]; 
    } else { 
     background = [UIImage imageNamed:@"cell_middle.png"]; 
    } 

    return background; 
} 

我再打電話,只是得到的每一個細胞後更新它reloadTable無效的方法在此方法中出現了行更新(添加或刪除行,因爲表中有3個不同的圖像)。我也在調用結果控制器從Core Data獲取所有項目並首次加載表格後調用此方法。

編輯2:這是reloadTable方法的代碼:

- (void)refreshTable 
{ 
    for (NSInteger j = 0; j < [self.tableView numberOfSections]; ++j) 
    { 
     for (NSInteger i = 0; i < [self.tableView numberOfRowsInSection:j]; ++i) 
     { 
      UIImage *background = [self cellBackgroundForRowAtIndexPath:[NSIndexPath indexPathForRow:i inSection:j]]; 

      UIImageView *cellBackgroundView = [[UIImageView alloc] initWithImage:background]; 
      cellBackgroundView.image = background; 
      UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:i inSection:j]]; 
      cell.backgroundView = cellBackgroundView; 
     } 
    } 
} 

的問題是:我不知道如何設置邊距或一個的tableView的寬度或表視圖細胞。我需要繼承一些東西嗎?它通常如何完成?

+0

我相信這些問題都與你的「定製的'UITableViewCell'」的界限有關。你可以發佈一些代碼給我們看嗎? –

+0

@TheKraken我添加了一些代碼,希望它有幫助。 – swiftcode

+0

正確的圖像被返回後,你是否將其設置爲「UITableViewCell」的視圖? –

回答

1

問題是您的表格視圖框架寬度,所選單元格的藍色將填充整個單元格,所以您應該減少您的表格視圖的寬度,以便它將具有一些margins這樣delete按鈕將會也出現在左邊一點。但是當你選擇它們時,第一個和最後一個單元仍然會有問題,因爲它們具有圓角,但藍色選擇不會有圓角,所以我建議你應該爲選定狀態創建一個.png圖像(一個第一個單元格,一箇中等細胞和一個底電池)

編輯

在iOS系統中的margins概念不存在,我只是用這個詞,因爲我認爲它會更容易理解但在這裏你必須做什麼才能在表格視圖的左側和右側顯示一點空間:

yourTableView.frame = CGRectMake(leftMarginSpace, 
           0, 
           self.view.frame.size.width 
            - leftMarginSpace 
            - rightMarginSpace, 
           self.view.frame.size.height); 

因此,如果您將表視圖添加到視圖控制器的視圖中,那麼表視圖將定位在距視圖控制器頂部(0 y位置)左側leftMarginSpace的距離處,位於rightMarginSpace距離右側,並且將具有視圖控制器的高度。

如果添加表視圖作爲一個子視圖到另一個視圖(不視圖控制器的視圖),那麼你必須改變這樣的框架:

yourTableView.frame = CGRectMake(leftMarginSpace, 
            0, 
            parentView.frame.size.width 
             - leftMarginSpace 
             - rightMarginSpace, 
            parentView.frame.size.height); 

我也注意到,要創建分組桌子的風格,所以你應該檢查grouped table view

+0

你能給我一些示例代碼嗎?我不知道如何設置邊距。 – swiftcode

+0

請檢查我編輯的答案。 – danypata