2016-02-08 3 views
0

У меня проблема с тем, как мой планшет отображается на устройстве iPad. Несмотря на то, что цвет фона был очищен на доске объявлений, tableview, когда тестирование на iPad всегда имеет серый цвет фона. Я искал вокруг этого сайта и нашли множество решений:Xamarin ios - Как получить доступ к ячейке из статического TableView

Уже попробовал это предложение

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

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

}

И я даже пытался переопределить функцию GetCell внутри моего класса Tableview, так что я могу изменить цвет contentView, обратившись к ячейке, например,

cell.contentView.backgroundColor 

Но функция GetCell никогда не вызывается.

EDIT

Вот экран образец одного из экранов, который имеет статический вид таблицы

screen shot

Может кто-то мне точку в правильном направлении?

+0

Вы можете показать снимок экрана с серого цвета фона? – iamIcarus

+0

@iamIcarus Я добавил скриншот одного из экранов и как он появился на iPad. Благодарю. – naffie

+0

с его населяющих ячеек вызывается ** GetCell **. Также похоже, что в ячейках/фоне таблицы есть белый, а не серый? – iamIcarus

ответ

0

После двух дней, пытаясь решить эту проблему белого фона, я нашел самое простое решение, которое работало для меня:

Чтобы решить эту проблему, просто добавьте эту строку в файле AppDelegate.cs, в вашей FinishedLaunching функции. Это определяет внешний вид всех ячеек таблицы в приложении (если вы на самом деле хотите, чтобы все ваши Tableview клетки, чтобы иметь четкое фон.)

UITableViewCell.Appearance.BackgroundColor = UIColor.Clear; 

Это теперь оказывается правильно на iPhone, а также IPad.

+0

Проблема с этим решением - все фон стола TableViewCells будет понятен в все приложение, и вы можете не хотеть этого. Кажется, что у вас больше проблем с реализацией TableView – Nick

+0

@Nick, у меня нет проблем с реализацией таблицы. У меня есть динамические таблицы и статические в моем приложении. Для статических представлений таблицы мне не нужен UITableViewSource, потому что все ячейки созданы на раскадровке. Это то, что я имел в виду, я не видел необходимости в определении источника таблицы, так как я не могу вернуть определенное количество строк в RowsInSection (строки уже были разработаны на раскадровке). Все время я искал способ доступа к этим статическим ячейкам таблицы, чтобы изменить цвет фона. Я нашел более простое решение, которое теперь я разместил выше – naffie

+0

, вы можете вернуть определенное количество строк, переопределив RowsInSection и возвращая количество ячеек. Ячейки, которые вы определили в своем раскадровке, тогда просто должны дать идентификатор и повторно использовать их, как в моем примере – Nick

0

Если вы хотите изменить цвет фона, переопределив GetCell, вы хотите предоставить свои пользовательские ячейки идентификатору в раскадровке и переопределить GetCell в TableViews TableSource, как показано ниже. Кроме того, вы можете проверить, что ваш источник 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

Hi @Nick. Благодарю за ваш ответ. Я надеялся, что мне не понадобится реализовать UITableViewSource для статической таблицы, но я все равно попробовал. Проблема состоит в том, что я вынужден реализовать функцию RowsInSection, которая на самом деле не имеет смысла, поскольку это статическая таблица. Другая проблема заключается в том, что я получаю еще одно исключение в функции GetCell, заявив, что ей не удалось получить ячейку из источника данных. – naffie

+0

Да, если вы реализуете пользовательский TableSource, вам также придется переопределить RowsInSection, и это нормально, просто верните номер для количества строк, которые у вас есть. – Nick

Смежные вопросы