【发布时间】:2020-01-31 19:22:09
【问题描述】:
我正在尝试在我的 React Native 应用程序中使用 SwiftUI 组件,这似乎有点复杂,因为我还没有找到任何在线文档或教程。以下是我正在使用的文件:
CategoryCardView.swift
import UIKit
import SwiftUI
struct CategoryCard: View {
var name: String
var body: some View {
Text(name)
}
}
@objc(RCTCategoryCardViewManager)
class RCTCategoryCardViewManager: RCTViewManager {
override static func requiresMainQueueSetup() -> Bool {
return true
}
@objc var name: String = "Default text"
override func view() -> UIView! {
let swiftUIView = CategoryCard(name: name)
let viewController = UIHostingController(rootView: swiftUIView)
return viewController.view
}
}
CategoryCardView.m
#import <React/RCTViewManager.h>
@interface RCT_EXTERN_MODULE(RCTCategoryCardViewManager, RCTViewManager)
RCT_EXPORT_VIEW_PROPERTY(name, NSString)
@end
NativeCategoryCard.tsx(在 React Native 中):
import {requireNativeComponent} from "react-native";
import React from "react";
const NativeCategoryCard = requireNativeComponent('RCTCategoryCardView');
export interface CategoryCardProps{
name: string;
}
function CategoryCard(props: CategoryCardProps) {
return <NativeCategoryCard
style={[{
height: 100,
width: 100
}]}
{...props}
/>
}
export default CategoryCard;
然后在我的 React Native 代码中的某个地方:
<CategoryCard text='hello' />
我的应用在尝试渲染 <CategoryCard> 时抛出以下错误:
Exception thrown while executing UI block: -[_TtGC7SwiftUI14_UIHostingViewV7PalChat12CategoryCard_ setName:]: unrecognized selector sent to instance 0x7fc8718c7830
我对 Swift 和 SwiftUI 不是很了解,尤其是在与 React Native 集成方面,所以如果我犯了一个明显的错误,我深表歉意。
【问题讨论】:
标签: ios swift react-native swiftui