Und die Lösung lautet:
Delphi-Quellcode:
procedure TF_MainiOS.SelectItem(var ATableView: TTMSFMXNativeUITableView; AIndex: Integer);
var idx: FMX.TMSNativeUICore.NSIndexPath;
vwMaster: UIView;
s, r: Integer;
dt, idt: TTMSFMXNativeUIBaseControl;
rs: NSRect;
n: Integer;
currentView: UIView;
begin
idx := FMX.TMSNativeUICore.TNSIndexPath.Wrap(FMX.TMSNativeUICore.TNSIndexPath.OCClass.indexPathForRow(AIndex, 0));
ATableView.TableView.selectRowAtIndexPath(iOSApi.Foundation.NSIndexPath(idx), False, UITableViewScrollPositionTop);
if not Assigned(ATableView) then
Exit;
s:= Integer(idx.section);
r:= Integer(idx.row);
idt:= ATableView.GetItem(s,r).SubDetailView;
dt:= ATableView.GetItem(s,r).DetailView;
{if Assigned(currentView) then
currentView.removeFromSuperView;}
vwMaster := ATableView.DetailView.GetView;
if Assigned(vwMaster) then
begin
for n:= 0 to dt.ChildrenCount - 1 do
begin
if dt.Children[n] is TTMSFMXNativeUIBaseControl then
begin
(dt.Children[n] as TTMSFMXNativeUIBaseControl).Visible := True;
(dt.Children[n] as TTMSFMXNativeUIBaseControl).Initialize;
end;
end;
currentView:= dt.GetView;
if Assigned(currentView) then
begin
rs.origin.x := dt.Position.X;
rs.origin.y := dt.Position.Y;
rs.size.width := dt.Width;
rs.size.height := dt.Height;
currentView.sethidden(false);
vwMaster.addSubview(currentView);
currentView.setFrame(rs);
end;
end;
ATableView.OnItemSelect(ATableView, 0, AIndex);
end;
Es funktioniert, wenn ich diese Funktion z.B. im Event eines Buttons aufrufe.
Im OnFormCreate hat es keine Auswirkung, warum?