質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
React Native

React Nativeは、ネイティブモバイルアプリ(iOS/Android)を作成できるJavaScriptフレームワークです。Reactと同じ設計のため、宣言的なコンポーネントでリッチなUIを開発することが可能です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Q&A

0回答

625閲覧

React NativeにてUITableViewのような編集機能について

momiji0210

総合スコア60

React Native

React Nativeは、ネイティブモバイルアプリ(iOS/Android)を作成できるJavaScriptフレームワークです。Reactと同じ設計のため、宣言的なコンポーネントでリッチなUIを開発することが可能です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

0グッド

0クリップ

投稿2019/12/10 04:49

編集2019/12/11 08:43

ReactNativeにてUITableViewの編集機能を実装したいです。
UITableViewの編集機能

こちらはヘッダーの右上ボタンを押すと、テーブルの各行が
右にずれて削除or順番の入れ替えができるようになります。

ReactNativeを使ってこの機能を実装したいのですが、
右にずれる際にボタンを表示したり、順番を入れ替えたりする方法がわかりません。

ヘッダーにボタンを表示したり、テーブルビューっぽいものを出すことはできたのですが、ほかの処理が検討もつきません。

お分かりになる方おりましたら、アドバイス頂くことは難しいでしょうか。

ReactNative

1import React from 'react'; 2import { StyleSheet, Text, View, ScrollView, SafeAreaView, FlatList } from 'react-native'; 3import { Button, ButtonGroup, List, ListItem } from 'react-native-elements'; 4import { connect } from 'react-redux'; 5 6import * as actions from '../actions'; 7 8const TABLE_DATA = [ 9 10 { 11 title: 'イベント名AAA', 12 total: 20000, 13 number: 6, 14 items:[ 15 1,2,3 16 ], 17 }, 18 19 { 20 title: 'イベント名BBB', 21 total: 20000, 22 number: 6, 23 items:[ 24 1,2,3 25 ], 26 }, 27 { 28 title: 'イベント名CCC', 29 total: 20000, 30 number: 6, 31 items:[ 32 1,2,3 33 ], 34 }, 35 { 36 title: 'イベント名DDD', 37 total: 20000, 38 number: 6, 39 items:[ 40 1,2,3 41 ], 42 }, 43]; 44 45function Item({ title }) { 46 return ( 47 <View style={styles.item}> 48 <Text style={styles.title}>{title}</Text> 49 </View> 50 ); 51} 52 53class HomeScreen extends React.Component { 54 55 constructor(props) { 56 super(props); 57 58 this.state = { 59 selectedIndex: ALL_INDEX, 60 }; 61 } 62 63 static navigationOptions = ({ navigation }) => { 64 const { state } = navigation 65 return { 66 headerRight: <Button 67 style={styles.headerButton} 68 type="clear" 69 title="編集" 70 color="white" 71 onPress={() => state.params.handleSave()} 72 />, 73 } 74 } 75 76 saveDetails() { 77 alert('saved') 78 } 79 80 onListItemPress = (selectedReview) => { 81 this.props.selectDetailReview(selectedReview); // ←追記部分 82 this.props.navigation.navigate('edit', selectedReview); 83 } 84 85 renderRow ({ item }) { 86 return ( 87 <ListItem 88 roundAvatar 89 title={item.name} 90 subtitle={item.subtitle} 91 avatar={{uri:item.avatar_url}} 92 /> 93 ); 94 } 95 96 97 // 画面描画 98 render() { 99 100 return ( 101 <SafeAreaView style={styles.safearea}> 102 <ScrollView> 103 <FlatList 104 style={styles.flatlist} 105 data={TABLE_DATA} 106 keyExtractor={(item) => item.id} 107 renderItem={({ item }) => ( 108 <ListItem 109 style={styles.item} 110 title={item.title} 111 onPress={() => this.onListItemPress(item)} 112 bottomDivider 113 /> 114 )} 115 /> 116 117 </ScrollView> 118 </SafeAreaView> 119 ); 120 } 121} 122 123const mapStateToProps = (state) => { // `state`を引数として受け取るアロー関数 124 return { 125 // `state.review.allReviews`を → `this.props.allReviews`にコピー 126 allReviews: state.review.allReviews 127 }; 128}; 129 130const styles = StyleSheet.create({ 131 132 headerButton: { 133 color: "#000", 134 //backgroundColor: 'rgba(255, 255, 255, 0.0)', 135 }, 136 137 safearea: { 138 flex: 1, 139 backgroundColor: "#eee" 140 }, 141 142 text: { 143 alignSelf: 'center', 144 margin: 20 145 }, 146 147 flatlist: { 148 149 }, 150 151 item: { 152 //backgroundColor: '#ffffff', 153 //padding: 10, 154 //marginVertical: 2, 155 //marginHorizontal: 2, 156 //borderWidth: 0.5, 157 //borderBottomWidth: 0.5, 158 //borderColor: '#000000', 159 }, 160 title: { 161 fontSize: 32, 162 }, 163}); 164 165//export default HomeScreen; 166export default connect(mapStateToProps, actions)(HomeScreen); 167

2019年12月11日 追記

ご回答ありがとうございます。
下記の手順で試したところエラーがでました。

① npm i react-native-tableview でインストール
② TableViewタグをrenderに追加

エラー内容
ReferenceError: Can't find variable: TableView

render() { return ( <ScrollView> <Text>aaa</Text> <TableView> </TableView> ); }

③ importで下記のように宣言 (公式にドキュメントが見当たらなかったため下記で設定)
import TableView from 'react-native-tableview';

エラー内容
null is not an object (evaluating 'r(d[0]).NativeModules.RNTableViewManager.Constants')

gitを見るとXcodeにてRNTableViewManagerを追加しているような記述があるのですが、
Xcodeのプロジェクトの場所及び、RNTableViewManager.hなどの保存してある場所がよくわかっておりません。

この設定が必要なのかもしれないのですが、よく理解できておらず・・・。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

thyda.eiqau

2019/12/10 06:39

react-native table order moveなどで検索すると良さそうなライブラリがいくつか出てきますが、ライブラリを使いたくない、使うことができない状況でしょうか?
momiji0210

2019/12/10 08:34

thyda.eiqau様 ご確認ありがとうございます! この辺、勉強し始めたばかりでライブラリ良く分かっておりませんでした。 ライブラリ使うことは問題ございません。 何かオススメがあったらご教示いただきたいです。
thyda.eiqau

2019/12/10 11:25

私はそのような機能を実装したことがないので実際の使用感はわかりませんが、ライブラリのリポジトリなんかを見てプロジェクトが活発に動いているやつを選んだほうが、問題が起きたときに苦しむ確率が低いと思います。私は昔マイナーなライブラリを使ったらトラブったときにググっても質の良し悪し以前にそもそも情報が出てこずに苦しんだ経験があります あとは基本的ですがデモを見てイメージに近いものを選ぶのがよいでしょう
momiji0210

2019/12/11 06:11

ご回答ありがとうございます。 色々と見てみたのですが、ご紹介いただきましたreact-native-tableが一番使いやすそうでした。 https://github.com/aksonov/react-native-tableview こちらをインストールしたのですが、 null is not an object (evaluating 'r(d[0]).NativeModules.RNTableViewManager.Constants') というエラーがでてしまい表示ができませんでした。 あまりreact環境になれていないため、違うかもしれませんが、link〜みたいな入力もしました。 ググってもあまり情報が出てこずに同じく苦しんでおります。 こちらインストール方法が違うのでしょうか。
thyda.eiqau

2019/12/11 06:18

どのようにしてインストールしたか、どういうコードを書いて実行したらエラーになったのか、質問本文に追記してください
momiji0210

2019/12/11 08:44

ご回答ありがとうございます。周りに聞ける方がいないため、本当に助かります。 本文内にエラー内容などを追記させていただきました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問