我使用下面的代码在Xamarin IOS的UITableview中显示自定义文本来代替刷卡中的删除。
public override string TitleForDeleteConfirmation(UITableView tableView, NSIndexPath indexPath)
{ // Optional - default text is 'Delete'
return "Move Out";
}
我想单独自定义此文本的字体系列和字体,我不希望它影响其他地方使用的字体和字体系列。
关于此的任何指示。
答案 0 :(得分:0)
我们应该弄清楚这个删除按钮的层次关系。它在不同版本上有一些差异。
在iOS 11上:它是UITableView
的子视图,因此我们可以使用以下代码获取它。但在我的测试中,XCode 8和9之间也存在一些差异。
if (UIDevice.CurrentDevice.CheckSystemVersion(11, 0))
{
//foreach (UIView subView in MyTableView.Subviews)
//{
// if (subView.Class.Name.ToString() == "UITableViewWrapperView")
// {
// foreach (UIView subsubView in subView.Subviews)
// {
// if (subsubView.Class.Name.ToString() == "UISwipeActionPullView")
// {
// UIButton deleteBtn = subView.Subviews[0] as UIButton;
// //configure the button
// }
// }
// }
//}
//For XCode 9.0+
foreach (UIView subView in MyTableView.Subviews)
{
if (subView.Class.Name.ToString() == "UISwipeActionPullView")
{
UIButton deleteBtn = subView.Subviews[0] as UIButton;
//configure the button
}
}
}
在iOS 8-10上:这是UITableViewCell
的子视图,请尝试枚举它:
else
{
UITableViewCell tableViewCell = MyTableView.CellAt(editingIndexPath);
foreach (UIView subView in tableViewCell.Subviews)
{
if (subView.Class.Name.ToString() == "UITableViewCellDeleteConfirmationView")
{
UIButton deleteBtn = subView.Subviews[0] as UIButton;
//configure the button
}
}
}
我们需要在用户滑动时显示每个单元格以显示删除按钮。我们可以在活动中得到它:
public class MyTableViewSource : UITableViewSource
{
ViewController superViewController;
public MyTableViewSource(ViewController viewController)
{
superViewController = viewController;
}
public override UITableViewCell GetCell(UITableView tableView, NSIndexPath indexPath)
{
...
}
public override nint RowsInSection(UITableView tableview, nint section)
{
...
}
public override string TitleForDeleteConfirmation(UITableView tableView, NSIndexPath indexPath)
{
return "Move Out";
}
public override void WillBeginEditing(UITableView tableView, NSIndexPath indexPath)
{
superViewController.editingIndexPath = indexPath;
//use this method to fire "ViewDidLayoutSubviews()"
superViewController.View.SetNeedsLayout();
}
public override void DidEndEditing(UITableView tableView, NSIndexPath indexPath)
{
superViewController.editingIndexPath = null;
}
public override void CommitEditingStyle(UITableView tableView, UITableViewCellEditingStyle editingStyle, NSIndexPath indexPath)
{
}
}
设置完成后,ViewDidLayoutSubviews()
将在显示删除按钮之前触发。因此,我们需要在ViewDidLayoutSubviews()
中调用我们在上面创建的配置方法:
public NSIndexPath editingIndexPath;
public override void ViewDidLayoutSubviews()
{
base.ViewDidLayoutSubviews();
if (editingIndexPath != null)
{
//This method is the code what I post above, implement on different iOS versions.
configSwipeActions();
}
}
答案 1 :(得分:0)
1点击故事栏中的单元格 2在您的酒店栏上设置班级名称 3创建类里面找到你的控件(只需键入你的控件名称出现?); 4设置your_controll.Font =(UIFont.FromName(" Helvetica",10);)