2016-02-08 47 views
0

我的桌面視圖是如何在iPad設備上呈現的問題。儘管在故事板上設置了背景色,但在iPad上測試時,桌面視圖總是具有灰色背景色。找遍了周圍的這個網站,找到了很多解決方案:Xamarin ios - 如何從一個靜態表格訪問一個單元格查看

已經嘗試過這個建議

public override void viewDidLoad() { 
base.ViewDidLoad(); 

tableView.backgroundView = new UIView(); 
tableView.backgroundView.backgroundColor = UIColor.Clear; 

}

而且我甚至試圖重寫我的tableview類內部的GetCell功能,這樣我就可以改變通過訪問單元格的contentView顏色,像這樣

cell.contentView.backgroundColor 

但GetCell函數永遠不會被調用。

編輯

下面是具有靜態表視圖

screen shot

有人能指出我在正確的方向上屏幕的一個樣本屏幕?

+0

可以顯示灰色背景顏色的截圖嗎? – iamIcarus

+0

@iamIcarus我添加了其中一個屏幕的屏幕截圖以及它在iPad上的顯示效果。謝謝。 – naffie

+0

因爲它的填充單元** GetCell **被調用。它看起來像單元格/ tableview背景是白色的不是灰色的? – iamIcarus

回答

0

兩天後,試圖解決這個白色背景的問題,我發現,工作對我來說最簡單的辦法:

爲了解決它,只需添加這條線在AppDelegate.cs文件,在你的FinishedLaunching功能。它定義了你的應用程序中的所有表格單元格的外觀(如果你真的希望所有的tableview細胞有一個清晰的背景。)

UITableViewCell.Appearance.BackgroundColor = UIColor.Clear; 

這是現在在iPhone以及iPad的正確呈現。

+0

該解決方案的問題是所有的TableViewCells背景都將在整個應用程序,你可能不希望這樣。看起來你正在更好地執行TableView – Nick

+0

@Nick,我沒有遇到實現表的麻煩。我有我的應用程序中的動態桌面和靜態的。對於靜態表格視圖,我並不需要UITableViewSource,因爲所有單元格都是在故事板上設計的。這就是我的意思,我沒有看到需要定義表格源,因爲我無法返回RowsInSection中的特定行數(行已經在故事板上設計)。一直以來,我一直在尋找一種方法來訪問這些靜態tableview單元格,所以我可以改變背景顏色。我最終找到了一個更簡單的解決方案,現在我張貼在 – naffie

+0

之上,您可以通過覆蓋RowsInSection返回特定數量的行,並且返回單元格的數量。你在故事板中定義的單元格然後就會給出一個標識符並在我的示例中重複使用它們 – Nick

0

如果您想要通過覆蓋GetCell來更改背景顏色,您希望爲您的自定義單元格提供故事板中的標識符,並在TableViews TableSource中重寫GetCell,如下所示。您可能還需要檢查您的tableView源被設置爲你的CustomTableSource在viewDidLoad中:

tableView.Source = new CustomTableSource(this); 

除非您使用的是IUITableViewDataSource然後檢查你的薄弱委託和源被設置:

tableView.WeakDelegate = this; 
tableView.WeakDataSource = this; 

重寫GetCell:

public override UITableViewCell GetCell(UITableView tableView, NSIndexPath indexPath) 
{ 
    var cell = tableView.DequeueReusableCell("CellIdentifier") as CustomCell; 
    if (cell == null) 
      cell = new CustomCell(); 
    cell.BackgroundColor = UIColor.Clear 
    return cell; 
} 

你必須重寫RowsInSection還有:

public nint RowsInSection(UITableView tableView, nint section) 
{ 
     return 7; 
} 
+0

嗨@尼克。感謝您的答覆。我希望我不需要爲靜態表實現一個UITableViewSource,但我仍然嘗試了它。我面臨的挑戰是,我不得不實現RowsInSection函數,因爲它是一個靜態表,所以在這裏並沒有什麼意義。另一個挑戰是我在GetCell函數中得到另一個異常,說它無法從數據源獲取單元格。 – naffie

+0

是的,如果你正在實現一個自定義表格源,你將不得不重寫RowsInSection,這很好,只要它返回一個你已經擁有的行數的數字 – Nick

相關問題