У меня есть следующий класс, который генерирует пользовательскую ячейку. Он работает очень хорошо. Однако у меня есть условие, когда мне нужно получить больше места для моей InfoLabel, чем это определено ниже. Я не мог справиться с этим?Настроить пользовательскую ячейку далее
public WeinerGeneralCellItem (NSString cellId, Short Weiner) : base (UITableViewCellStyle.Default, cellId)
{
this.Weiner = Weiner;
weinerInfoLabel = new UILabel() {
TextColor = UIColor.FromRGB (0, 0, 0),
BackgroundColor = UIColor.Clear,
TextAlignment = UITextAlignment.Left,
};
weinerInfo = new UITextField() {
TextColor = UIColor.FromRGB (0, 0, 0),
TextAlignment = UITextAlignment.Right,
BackgroundColor = UIColor.Clear,
};
ContentView.Add (weinerInfoLabel);
ContentView.Add (weinerInfo);
}
public override void LayoutSubviews()
{
base.LayoutSubviews();
weinerInfoLabel.Frame = new CGRect(20, ContentView.Bounds.Height/4, 200, 25);
weinerInfo.Frame = new CGRect(220, ContentView.Bounds.Height/4, 300, 25);
}
}
По ширине infolabel по умолчанию составляет 200, информация является 300, но для последней ячейки, я хочу infoLabel ширина 350, информация 150. Я попытался следующие, но это не сработало.
public override UITableViewCell GetCell (UITableView tableView, NSIndexPath indexPath)
{
if (indexPath.Row == 5) {
cell.weinerInfoLabel.Frame = new CGRect(20, 20, 350, 25);
cell.weinerInfo.Frame = new CGRect(350, 20, 150, 25);
cell.weinerInfoLabel.Text = "The value calculated from the server";
cell.weinerInfo.Tag = 5;
cell.weinerInfo.Text = "155.00";
}
}
Вы используете другой идентификатор для 5-й ячейки? В противном случае механизм кэширования будет обрабатывать каждую ячейку одинаково. – Jason
Вам нужно учитывать разницу в 'cellForRowAtIndexPath', потому что это метод, который знает о строках. Сама клетка этого не делает. Вы можете вызвать метод на объекте ячейки, чтобы он настроил себя из 'cellForRowAtIndexPath' – Paulw11
Я назначаю тэг, как следует cell.winerinfo.Tag = 5 – hotspring