Я изучаю nativescript-vue, используя машинопись. Я реализовал встроенную панель поиска в iOS. Я пытаюсь выяснить, как настроить делегатов (в соответствии с документацией UISearchBarDelegate). Появляется панель поиска, однако при попытке настроить делегата я получаю следующую ошибку:
(CoreFoundation) Завершение приложения из-за необработанного исключения 'NativeScript обнаружил фатальную ошибку: TypeError: Попытка назначить для чтения толькосвойство.
Я имел в виду этот документ: https://docs.nativescript.org/core-concepts/ios-runtime/how-to/ObjC-Subclassing
Любые идеи или другие ресурсы, которые помогут решить эту проблему?
/// Приложение.vue:
<template>
<Page @loaded="onPageLoaded">
<ActionBar title="Welcome to NativeScript-Vue!"/>
<GridLayout columns="*" rows="*">
<Label class="message" :text="msg" col="0" row="0"/>
</GridLayout>
</Page>
</template>
<script lang="ts">
import { isIOS } from 'tns-core-modules/platform'
import { Page } from 'tns-core-modules/ui/page'
import { EventData } from 'tns-core-modules/data/observable'
export default {
data() {
return {
msg: 'Hello World!'
}
},
methods: {
onPageLoaded(args: EventData) {
const page = args.object as Page
if (isIOS) {
const navController = page.frame.ios.controller as UINavigationController
const searchController = UISearchController.new()
const topController = navController.topViewController
topController.navigationItem.searchController = searchController
let searchBarDelegate: SearchBarDelegateImpl = SearchBarDelegateImpl.new()
searchController.searchBar.delegate = searchBarDelegate
}
}
}
}
class SearchBarDelegateImpl extends NSObject implements UISearchBarDelegate {
static ObjCProtocols = [UISearchBarDelegate]
static new(): SearchBarDelegateImpl {
return <SearchBarDelegateImpl>super.new()
}
searchBarTextDidBeginEditing(searchBar: UISearchBar) {
console.log("searchBarTextDidBeginEditing")
}
}
</script>
<style scoped>
ActionBar {
background-color: #53ba82;
color: #ffffff;
}
.message {
vertical-align: center;
text-align: center;
font-size: 20;
color: #333333;
}
</style>