NativeScript 在 iOS 的 ListView 行上放置披露指示符
NativeScript Place Disclosure Indicator on ListView Rows for iOS
我的 NativeScript 页面中有一个这样的结构:
<ListView #listView [items]="summaryData" row="0">
<Template let-item="item">
<GridLayout columns="180, *, auto" rows="auto, *">
<Label [text]="item.name" col="0" class="summary"></Label>
<Label [text]="item.value" col=1 class="summary"></Label>
</GridLayout>
</Template>
</ListView>
对于 iOS 方面,我想对 table 视图单元格使用本机披露指示器。我可以使用以下代码删除分隔线:
@ViewChild("listView") listView: ElementRef;
ngOnInit() {
this.summaryData = this._summaryService.load();
if (this._page.ios) {
let iosListView = <ListView>this.listView.nativeElement;
iosListView.ios.separatorStyle = 0; // Removes the separator lines.
}
}
但我似乎无法弄清楚如何到达各个行,也就是 UITableViewCell
来设置 accessoryType 值。这可以用 NativeScript 实现吗?
您需要订阅 ListView 的 itemLoading
,然后在那里更改 accessoryType
。所以你的 html 应该是这样的:
<ListView #listView [items]="summaryData" (itemLoading)="onItemLoading($event)" row="0">
<Template let-item="item">
<GridLayout columns="180, *, auto" rows="auto, *">
<Label [text]="item.name" col="0" class="summary"></Label>
<Label [text]="item.value" col=1 class="summary"></Label>
</GridLayout>
</Template>
</ListView>
然后在你的组件中有:
import {ItemEventData} from "ui/list-view";
onItemLoading(args: ItemEventData) {
if (args.ios) {
// args.ios is instance of UITableViewCell
args.ios.accessoryType = 1; // UITableViewCellAccessoryDisclosureIndicator
}
}
我的 NativeScript 页面中有一个这样的结构:
<ListView #listView [items]="summaryData" row="0">
<Template let-item="item">
<GridLayout columns="180, *, auto" rows="auto, *">
<Label [text]="item.name" col="0" class="summary"></Label>
<Label [text]="item.value" col=1 class="summary"></Label>
</GridLayout>
</Template>
</ListView>
对于 iOS 方面,我想对 table 视图单元格使用本机披露指示器。我可以使用以下代码删除分隔线:
@ViewChild("listView") listView: ElementRef;
ngOnInit() {
this.summaryData = this._summaryService.load();
if (this._page.ios) {
let iosListView = <ListView>this.listView.nativeElement;
iosListView.ios.separatorStyle = 0; // Removes the separator lines.
}
}
但我似乎无法弄清楚如何到达各个行,也就是 UITableViewCell
来设置 accessoryType 值。这可以用 NativeScript 实现吗?
您需要订阅 ListView 的 itemLoading
,然后在那里更改 accessoryType
。所以你的 html 应该是这样的:
<ListView #listView [items]="summaryData" (itemLoading)="onItemLoading($event)" row="0">
<Template let-item="item">
<GridLayout columns="180, *, auto" rows="auto, *">
<Label [text]="item.name" col="0" class="summary"></Label>
<Label [text]="item.value" col=1 class="summary"></Label>
</GridLayout>
</Template>
</ListView>
然后在你的组件中有:
import {ItemEventData} from "ui/list-view";
onItemLoading(args: ItemEventData) {
if (args.ios) {
// args.ios is instance of UITableViewCell
args.ios.accessoryType = 1; // UITableViewCellAccessoryDisclosureIndicator
}
}