我很好奇我一直在開發的 Xamarin.Forms 應用程式 (XF 4.8) 是否可以在帶有 M1 的 Mac 上運行,現在 TestFlight 可用。
幾乎完美無缺,除了我加載的至少兩個具有 XF TableView 的不同頁面。我想我可能在那里有一個錯誤,但它在 iOS 和 iPadOS 中確實很好用。
具有諷刺意味的是,仔細觀察,我提醒自己我有一個非常復雜的表格視圖確實有效。我想知道為什么?
可能有提示:最后仔細看了一下崩潰報告,發現XF中參考了一行代碼:D:\a\1\s\Xamarin.Forms.Platform.iOS\Renderers\TableViewModelRenderer.cs :74
從 GitHub 來看,這似乎是(在背景關系中):
public override void WillDisplayHeaderView(UITableView tableView, UIView headerView, nint section)
{
if (headerView is UITableViewHeaderFooterView header)
{
var sectionHeaderTextColor = View.Model.GetSectionTextColor((int)section);
if (sectionHeaderTextColor != Color.Default)
{
74> header.TextLabel.TextColor = sectionHeaderTextColor.ToUIColor();
}
}
}
檢查,作業的 TableView 和失敗的 TableView 之間的區別:TableSection 有一個“Title”和一個“TextColor”。
有沒有其他人看過這個?我唯一看到的是 Apple 將 UITableViewHeaderFooterView 中的“TextLabel”列為已棄用。我不認為這應該導致這個,是嗎?
鮑勃
uj5u.com熱心網友回復:
我很好奇我一直在開發的 Xamarin.Forms 應用程式 (XF 4.8) 是否可以在帶有 M1 的 Mac 上運行,現在 TestFlight 可用。
幾乎完美無缺,除了我加載的至少兩個具有 XF TableView 的不同頁面。我想我可能在那里有一個錯誤,但它在 iOS 和 iPadOS 中確實很好用。
你的意思是它只適用于iPhone/iPad (real device)而不適用于Mac M1(simulate)?
你試過None-M1 mac嗎?發生了什么 ?
我強烈建議您更新XF到最新版本(5.xxx),看看問題是否仍然存在。
如果問題仍然存在,您可以創建自定義渲染器TableView并覆寫WillDisplayHeaderView方法中的邏輯,因為我看到在iOS14之后textLabel不再可用,對于更改標簽文本顏色,我們可以使用UILabel外觀,請參閱
示例代碼
[assembly: ExportRenderer(typeof(TableView), typeof(MyTableViewRenderer))]
namespace FormsApp.iOS
{
internal class MyTableViewRenderer : TableViewRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<TableView> e)
{
base.OnElementChanged(e);
if (Control == null)
return;
var tableView = Control as UITableView;
var formsTableView = Element as TableView;
MyModelRenderer render = new MyModelRenderer(formsTableView);
tableView.WeakDelegate = render;
}
}
public class MyModelRenderer : TableViewModelRenderer
{
public MyModelRenderer(TableView model) : base(model)
{
}
public override void WillDisplayHeaderView(UITableView tableView, UIView headerView, nint section)
{
if (headerView is UITableViewHeaderFooterView header)
{
var sectionHeaderTextColor = View.Model.GetSectionTextColor((int)section);
if (sectionHeaderTextColor != Color.Default)
{
UILabel.AppearanceWhenContainedIn(typeof(UITableViewHeaderFooterView)).TextColor = sectionHeaderTextColor.ToUIColor(); //change this line
}
}
}
}
}
uj5u.com熱心網友回復:
感謝 ColeX——可能是正確的方法。
所以,我試圖在我的 Mac M1(真實設備)上運行我的應用程式作為 iOS 應用程式——而不是模擬。正如我所說,它大多有效。
但是,我查看了我的 TableView 案例,意識到我不需要部分標題中的文本,所以擺脫了它和顏色——現在它可以在 MAC 上作業了!是的!
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/373512.html
標籤:苹果系统 xamarin.forms xamarin.ios
上一篇:如何使用“sw_vers”組合2個蘋果腳本?一種用于sierra的腳本,另一種用于其他macos的腳本?
下一篇:APIFetch不提取資料
