diff --git a/apps/mobile/packages/follow-native/example/App.tsx b/apps/mobile/packages/follow-native/example/App.tsx index 1092d4b70d..5c2aef2691 100644 --- a/apps/mobile/packages/follow-native/example/App.tsx +++ b/apps/mobile/packages/follow-native/example/App.tsx @@ -1,15 +1,18 @@ -import { ListView } from "follow-native" +import { TableView } from "follow-native" import { ScrollView } from "react-native" export default function App() { return ( - - + // + // + // + + ) } diff --git a/apps/mobile/packages/follow-native/expo-module.config.json b/apps/mobile/packages/follow-native/expo-module.config.json index 82a10f3412..630e12f7e7 100644 --- a/apps/mobile/packages/follow-native/expo-module.config.json +++ b/apps/mobile/packages/follow-native/expo-module.config.json @@ -1,7 +1,7 @@ { "platforms": ["apple", "android", "web"], "apple": { - "modules": ["ListModule"] + "modules": ["ListModule", "TableViewModule"] }, "android": { "modules": ["expo.modules.follownative.ListModule"] diff --git a/apps/mobile/packages/follow-native/ios/FollowNative.podspec b/apps/mobile/packages/follow-native/ios/FollowNative.podspec index 63c513ba40..7373537b67 100644 --- a/apps/mobile/packages/follow-native/ios/FollowNative.podspec +++ b/apps/mobile/packages/follow-native/ios/FollowNative.podspec @@ -19,7 +19,7 @@ Pod::Spec.new do |s| s.static_framework = true s.dependency 'ExpoModulesCore' - + s.dependency 'SnapKit', '~> 5.7.0' # Swift/Objective-C compatibility s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES', diff --git a/apps/mobile/packages/follow-native/ios/TableView.swift b/apps/mobile/packages/follow-native/ios/TableView.swift index 1e5b57daa8..4ca43fe96e 100644 --- a/apps/mobile/packages/follow-native/ios/TableView.swift +++ b/apps/mobile/packages/follow-native/ios/TableView.swift @@ -5,4 +5,41 @@ // Created by Innei on 2025/1/29. // -import Foundation +import ExpoModulesCore +import UIKit + +class FOTableView: ExpoView, UITableViewDataSource, UITableViewDelegate { + var tableView: UITableView! + + let data = [ + "苹果", "香蕉", "橙子", "葡萄", "蓝莓", "草莓", "西瓜", + ] + required init(appContext: AppContext? = nil) { + super.init(appContext: appContext) + + tableView = UITableView(frame: UIScreen.main.bounds) + addSubview(tableView) + + tableView.dataSource = self + tableView.delegate = self + // 注册 UITableViewCell + tableView.register(UITableViewCell.self, forCellReuseIdentifier: "Cell") + + // 添加 tableView 到主视图 + addSubview(tableView) + } + + // UITableViewDataSource 方法 + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + return data.count + } + + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) + + // 配置每一行的内容 + cell.textLabel?.text = data[indexPath.row] + + return cell + } +} diff --git a/apps/mobile/packages/follow-native/ios/TableViewModule.swift b/apps/mobile/packages/follow-native/ios/TableViewModule.swift index 29dc09607f..b2698a7554 100644 --- a/apps/mobile/packages/follow-native/ios/TableViewModule.swift +++ b/apps/mobile/packages/follow-native/ios/TableViewModule.swift @@ -5,4 +5,13 @@ // Created by Innei on 2025/1/29. // -import Foundation +import ExpoModulesCore + +public class TableViewModule: Module { + public func definition() -> ModuleDefinition { + Name("FOTableView") + + View(FOTableView.self) { + } + } +} diff --git a/apps/mobile/packages/follow-native/src/TableView.tsx b/apps/mobile/packages/follow-native/src/TableView.tsx new file mode 100644 index 0000000000..4a22496f57 --- /dev/null +++ b/apps/mobile/packages/follow-native/src/TableView.tsx @@ -0,0 +1,8 @@ +import { requireNativeView } from "expo" +import * as React from "react" + +const NativeView: React.ComponentType = requireNativeView("FOTableView") + +export default function TableView() { + return +} diff --git a/apps/mobile/packages/follow-native/src/index.ts b/apps/mobile/packages/follow-native/src/index.ts index 3f3c8f84eb..b79d2b69f5 100644 --- a/apps/mobile/packages/follow-native/src/index.ts +++ b/apps/mobile/packages/follow-native/src/index.ts @@ -1 +1,2 @@ export { default as ListView } from "./ListView" +export { default as TableView } from "./TableView"