Yingchuan

初版

... ... @@ -136,6 +136,8 @@ dependencies {
compile fileTree(dir: "libs", include: ["*.jar"])
compile "com.android.support:appcompat-v7:23.0.1"
compile "com.facebook.react:react-native:+" // From node_modules
compile project(':react-native-dialog')
// compile project(':react-native-splash-screen')
}
// Run this once to be able to run the application with BUCK
... ...
package com.protectgod;
// import android.os.Bundle;
import com.facebook.react.ReactActivity;
// import com.cboy.rn.splashscreen.SplashScreen;
public class MainActivity extends ReactActivity {
... ... @@ -12,4 +14,9 @@ public class MainActivity extends ReactActivity {
protected String getMainComponentName() {
return "ProtectGod";
}
// @Override
// protected void onCreate(Bundle savedInstanceState) {
// SplashScreen.show(this);
// super.onCreate(savedInstanceState);
// }
}
... ...
... ... @@ -7,6 +7,8 @@ import com.facebook.react.ReactNativeHost;
import com.facebook.react.ReactPackage;
import com.facebook.react.shell.MainReactPackage;
import com.facebook.soloader.SoLoader;
import com.honaf.dialog.MyDialogPackage;
// import com.cboy.rn.splashscreen.SplashScreenReactPackage;
import java.util.Arrays;
import java.util.List;
... ... @@ -22,6 +24,8 @@ public class MainApplication extends Application implements ReactApplication {
@Override
protected List<ReactPackage> getPackages() {
return Arrays.<ReactPackage>asList(
// new SplashScreenReactPackage(),
new MyDialogPackage(),
new MainReactPackage()
);
}
... ... @@ -37,4 +41,5 @@ public class MainApplication extends Application implements ReactApplication {
super.onCreate();
SoLoader.init(this, /* native exopackage */ false);
}
}
... ...
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/launch_screen">
</LinearLayout>
\ No newline at end of file
... ...

3.34 KB | W: | H:

4.12 KB | W: | H:

  • 2-up
  • Swipe
  • Onion skin

2.15 KB | W: | H:

3.04 KB | W: | H:

  • 2-up
  • Swipe
  • Onion skin

4.73 KB | W: | H:

5.35 KB | W: | H:

  • 2-up
  • Swipe
  • Onion skin

7.54 KB | W: | H:

7.5 KB | W: | H:

  • 2-up
  • Swipe
  • Onion skin
<resources>
<string name="app_name">ProtectGod</string>
<string name="app_name">保护神</string>
</resources>
... ...
rootProject.name = 'ProtectGod'
// include ':react-native-splash-screen'
// project(':react-native-splash-screen').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-splash-screen/android')
include ':app'
include ':react-native-dialog'
project(':react-native-dialog').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-dialog/android')
... ...
... ... @@ -6,7 +6,7 @@
import React, { Component } from "react";
import { AppRegistry, StyleSheet, Text, View, Image } from "react-native";
import { StackNavigator, TabNavigator } from "react-navigation";
import { StackNavigator, TabNavigator, TabBarBottom } from "react-navigation";
import Home from "./src/pages/Home/index";
import InsuranceCircle from "./src/pages/InsuranceCircle/index";
... ... @@ -16,6 +16,17 @@ import Login from "./src/pages/Login";
import AllProduct from "./src/pages/Home/allProduct";
import CommonWebView from "./src/Components/CommonWebView";
import Details from "./src/pages/InsuranceCircle/details";
import CommonImageView from "./src/Components/CommonImageView";
// import SplashScreen from 'react-native-splash-screen'
// export default class ProtectGod extends Component {
// componentDidMount() {
// // do anything while splash screen keeps, use await to wait for an async task.
// // SplashScreen.hide();
// }
// }
// 底部导航栏配置,但也只是作为一个页面,加载到StackNavigator成为第一个页面
const MainTabBar = TabNavigator({
... ... @@ -25,9 +36,9 @@ const MainTabBar = TabNavigator({
title: "首页",
tabBarIcon: ({ focused }) =>
focused ? (
<Image source={require("./src/assets/tabbar/ic_home_s.png")} />
<Image source={require("./src/assets/tabbar/ic_home_s.png")} style={styles.icon}/>
) : (
<Image source={require("./src/assets/tabbar/ic_home_n.png")} />
<Image source={require("./src/assets/tabbar/ic_home_n.png")} style={styles.icon}/>
)
}
},
... ... @@ -37,9 +48,9 @@ const MainTabBar = TabNavigator({
title: "保圈",
tabBarIcon: ({ focused }) =>
focused ? (
<Image source={require("./src/assets/tabbar/ic_circle_s.png")} />
<Image source={require("./src/assets/tabbar/ic_circle_s.png")} style={styles.icon}/>
) : (
<Image source={require("./src/assets/tabbar/ic_circle_n.png")} />
<Image source={require("./src/assets/tabbar/ic_circle_n.png")} style={styles.icon}/>
)
}
},
... ... @@ -49,9 +60,9 @@ const MainTabBar = TabNavigator({
title: "保堂",
tabBarIcon: ({ focused }) =>
focused ? (
<Image source={require("./src/assets/tabbar/ic_umbrella_s.png")} />
<Image source={require("./src/assets/tabbar/ic_umbrella_s.png")} style={styles.icon}/>
) : (
<Image source={require("./src/assets/tabbar/ic_umbrella_n.png")} />
<Image source={require("./src/assets/tabbar/ic_umbrella_n.png")} style={styles.icon}/>
)
}
},
... ... @@ -61,16 +72,23 @@ const MainTabBar = TabNavigator({
title: "我的",
tabBarIcon: ({ focused }) =>
focused ? (
<Image source={require("./src/assets/tabbar/ic_mine_s.png")} />
<Image source={require("./src/assets/tabbar/ic_mine_s.png")} style={styles.icon}/>
) : (
<Image source={require("./src/assets/tabbar/ic_mine_n.png")} />
<Image source={require("./src/assets/tabbar/ic_mine_n.png")} style={styles.icon}/>
)
}
}
},{
tabBarComponent: TabBarBottom,
swipeEnabled: true,
tabBarPosition: 'bottom',
tabBarOptions: {
activeTintColor: "#1B9341"
showIcon: true,
activeTintColor: "#1B9341",
inactiveTintColor:"rgb(113,113,113)",
style: {
backgroundColor: '#fff',
},
}
});
... ... @@ -87,19 +105,29 @@ const ProtectGod = StackNavigator(
navigationOptions: { headerTitle: "全部产品" }
},
CommonWebView: { screen: CommonWebView },
CommonImageView:{screen:CommonImageView},
Details: { screen: Details }
},{
navigationOptions: {
// headerTintColor: "blue",
headBackTitle:"返回",
headerStyle: {
backgroundColor: "white"
}
backgroundColor: "white",
},
headerTitleStyle:{
alignSelf:'center'
},
}
}
);
const styles = StyleSheet.create(
const styles = StyleSheet.create({
icon:{
height: 22,
width: 25,
resizeMode: 'contain'
}
}
);
AppRegistry.registerComponent("ProtectGod", () => ProtectGod);
... ...
... ... @@ -5,7 +5,6 @@
};
objectVersion = 46;
objects = {
/* Begin PBXBuildFile section */
00C302E51ABCBA2D00DB3ED1 /* libRCTActionSheet.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302AC1ABCB8CE00DB3ED1 /* libRCTActionSheet.a */; };
00C302E71ABCBA2D00DB3ED1 /* libRCTGeolocation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302BA1ABCB90400DB3ED1 /* libRCTGeolocation.a */; };
... ... @@ -37,6 +36,7 @@
5E9157361DD0AC6A00FF2AA8 /* libRCTAnimation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5E9157331DD0AC6500FF2AA8 /* libRCTAnimation.a */; };
832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 832341B51AAA6A8300B99B32 /* libRCTText.a */; };
ADBDB9381DFEBF1600ED6528 /* libRCTBlob.a in Frameworks */ = {isa = PBXBuildFile; fileRef = ADBDB9271DFEBF0700ED6528 /* libRCTBlob.a */; };
C91577173D3947ED9D1548F5 /* libSplashScreen.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DF994B30760F474FACB8FF75 /* libSplashScreen.a */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
... ... @@ -299,6 +299,8 @@
78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTLinking.xcodeproj; path = "../node_modules/react-native/Libraries/LinkingIOS/RCTLinking.xcodeproj"; sourceTree = "<group>"; };
832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTText.xcodeproj; path = "../node_modules/react-native/Libraries/Text/RCTText.xcodeproj"; sourceTree = "<group>"; };
ADBDB91F1DFEBF0600ED6528 /* RCTBlob.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTBlob.xcodeproj; path = "../node_modules/react-native/Libraries/Blob/RCTBlob.xcodeproj"; sourceTree = "<group>"; };
80E39CDAE5D6417B95E2E782 /* SplashScreen.xcodeproj */ = {isa = PBXFileReference; name = "SplashScreen.xcodeproj"; path = "../node_modules/react-native-splash-screen/ios/SplashScreen.xcodeproj"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = wrapper.pb-project; explicitFileType = undefined; includeInIndex = 0; };
DF994B30760F474FACB8FF75 /* libSplashScreen.a */ = {isa = PBXFileReference; name = "libSplashScreen.a"; path = "libSplashScreen.a"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = archive.ar; explicitFileType = undefined; includeInIndex = 0; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
... ... @@ -327,6 +329,7 @@
832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */,
00C302EA1ABCBA2D00DB3ED1 /* libRCTVibration.a in Frameworks */,
139FDEF61B0652A700C62182 /* libRCTWebSocket.a in Frameworks */,
C91577173D3947ED9D1548F5 /* libSplashScreen.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
... ... @@ -498,6 +501,7 @@
832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */,
00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */,
139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */,
80E39CDAE5D6417B95E2E782 /* SplashScreen.xcodeproj */,
);
name = Libraries;
sourceTree = "<group>";
... ... @@ -625,7 +629,7 @@
83CBB9F71A601CBA00E9B192 /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0610;
LastUpgradeCheck = 610;
ORGANIZATIONNAME = Facebook;
TargetAttributes = {
00E356ED1AD99517003FC87E = {
... ... @@ -1085,6 +1089,14 @@
);
PRODUCT_NAME = "$(TARGET_NAME)";
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/ProtectGod.app/ProtectGod";
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
);
HEADER_SEARCH_PATHS = (
"$(inherited)",
"$(SRCROOT)\..\node_modules\react-native-splash-screen\ios",
);
};
name = Debug;
};
... ... @@ -1103,6 +1115,14 @@
);
PRODUCT_NAME = "$(TARGET_NAME)";
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/ProtectGod.app/ProtectGod";
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
);
HEADER_SEARCH_PATHS = (
"$(inherited)",
"$(SRCROOT)\..\node_modules\react-native-splash-screen\ios",
);
};
name = Release;
};
... ... @@ -1126,6 +1146,10 @@
PRODUCT_NAME = ProtectGod;
PROVISIONING_PROFILE_SPECIFIER = "";
VERSIONING_SYSTEM = "apple-generic";
HEADER_SEARCH_PATHS = (
"$(inherited)",
"$(SRCROOT)\..\node_modules\react-native-splash-screen\ios",
);
};
name = Debug;
};
... ... @@ -1148,6 +1172,10 @@
PRODUCT_NAME = ProtectGod;
PROVISIONING_PROFILE_SPECIFIER = "";
VERSIONING_SYSTEM = "apple-generic";
HEADER_SEARCH_PATHS = (
"$(inherited)",
"$(SRCROOT)\..\node_modules\react-native-splash-screen\ios",
);
};
name = Release;
};
... ... @@ -1174,6 +1202,14 @@
SDKROOT = appletvos;
TARGETED_DEVICE_FAMILY = 3;
TVOS_DEPLOYMENT_TARGET = 9.2;
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
);
HEADER_SEARCH_PATHS = (
"$(inherited)",
"$(SRCROOT)\..\node_modules\react-native-splash-screen\ios",
);
};
name = Debug;
};
... ... @@ -1200,6 +1236,14 @@
SDKROOT = appletvos;
TARGETED_DEVICE_FAMILY = 3;
TVOS_DEPLOYMENT_TARGET = 9.2;
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
);
HEADER_SEARCH_PATHS = (
"$(inherited)",
"$(SRCROOT)\..\node_modules\react-native-splash-screen\ios",
);
};
name = Release;
};
... ... @@ -1221,6 +1265,10 @@
SDKROOT = appletvos;
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/ProtectGod-tvOS.app/ProtectGod-tvOS";
TVOS_DEPLOYMENT_TARGET = 10.1;
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
);
};
name = Debug;
};
... ... @@ -1242,6 +1290,10 @@
SDKROOT = appletvos;
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/ProtectGod-tvOS.app/ProtectGod-tvOS";
TVOS_DEPLOYMENT_TARGET = 10.1;
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"\"$(SRCROOT)/$(TARGET_NAME)\"",
);
};
name = Release;
};
... ...
{
"name": "ProtectGod",
"version": "0.0.1",
"private": true,
"scripts": {
"start": "node node_modules/react-native/local-cli/cli.js start",
"test": "jest"
},
"dependencies": {
"react": "16.0.0-alpha.12",
"react-native": "0.48.1",
"react-native-swiper": "^1.5.11",
"react-navigation": "^1.0.0-beta.11"
},
"devDependencies": {
"babel-jest": "20.0.3",
"babel-preset-react-native": "3.0.2",
"jest": "20.0.4",
"react-test-renderer": "16.0.0-alpha.12"
},
"jest": {
"preset": "react-native"
}
"name": "ProtectGod",
"version": "0.0.1",
"private": true,
"scripts": {
"start": "node node_modules/react-native/local-cli/cli.js start",
"test": "jest"
},
"dependencies": {
"react": "16.0.0-alpha.12",
"react-native": "0.48.1",
"react-native-dialog": "^1.0.7",
"react-native-popup-dialog": "^0.9.35",
"react-native-splash-screen": "^3.0.1",
"react-native-swiper": "^1.5.11",
"react-navigation": "^1.0.0-beta.11"
},
"devDependencies": {
"babel-jest": "20.0.3",
"babel-preset-react-native": "3.0.2",
"jest": "20.0.4",
"react-test-renderer": "16.0.0-alpha.12"
},
"jest": {
"preset": "react-native"
}
}
... ...
import React, { Component } from "react";
import {
StyleSheet,
WebView,
View,
Image,
Dimensions,
ScrollView
} from "react-native";
import { StackNavigator, TabNavigator } from "react-navigation";
export default class CommonImageView extends Component {
constructor(props) {
super(props);
}
render() {
console.log("Image index", this.props.navigation.state.params.index);
const index = this.props.navigation.state.params.index;
return (
<View style={styles.container}>
<ScrollView>
{index == 0 ? (
<Image
style={styles.imgOne}
resizeMode="contain"
source={require("../assets/home/product_long_1.jpg")}
/>
) : (
<Image
style={styles.imgTwo}
resizeMode="contain"
source={require("../assets/home/product_long_2.jpg")}
/>
)}
</ScrollView>
</View>
);
}
}
const styles = StyleSheet.create({
container: {
justifyContent: "flex-start",
backgroundColor: "#EFEFEF",
},
imgOne: {
width: Dimensions.get("window").width,
height: Dimensions.get("window").width * 3118 / 640,
},
imgTwo: {
width: Dimensions.get("window").width,
height: Dimensions.get("window").width * 1651 / 690,
}
});
\ No newline at end of file
... ...
... ... @@ -10,6 +10,7 @@ import {
} from "react-native";
import { StackNavigator, TabNavigator } from 'react-navigation';
import CommonWebView from "../../Components/CommonWebView";
import CommonImageView from "../../Components/CommonImageView"
export default class AllProduct extends Component {
... ... @@ -47,7 +48,7 @@ export default class AllProduct extends Component {
<TouchableOpacity
style={styles.itemContainer}
key={index}
onPress={() => navigate("CommonWebView", { item: item })}
onPress={() => navigate("CommonImageView", { index: index })}
>
<Image style={styles.itemImgWrapper} source={item.imgurl} />
<View style={styles.itemRightWrapper}>
... ...
... ... @@ -79,11 +79,17 @@ export default class Home extends Component {
img: require("../../assets/home/slider_3.jpeg")
// url: "https://www.baidu.com/"
}
]
],
swiperShow:false,
};
}
componentDidMount() {
console.log("thisprops", this.props);
setTimeout(()=>{
this.setState({
swiperShow:true
});
},0)
}
_renderMap() {
const { navigate } = this.props.navigation;
... ... @@ -113,40 +119,42 @@ export default class Home extends Component {
const { navigate } = this.props.navigation;
const {height, width} = Dimensions.get('window');
const imgHeight = width * 140 / 375;
return (
<View style={{ height: imgHeight }}>
<Swiper
style={styles.swiperWrapper}
autoplay={true}
autoplayTimeout={6}
height={imgHeight}
dotStyle={{
width: 6,
height: 6,
}}
activeDotStyle={{
width: 6,
height: 6
}}
>
{this.state.swiperImgList.map((item, index) => {
{
/* console.log("图片item",item); */
}
return (
<TouchableOpacity style={styles.slide} key={index}>
<Image
style={styles.slideImg}
source={item.img}
width={Dimensions.get('window').width}
resizeMode="stretch"
/>
</TouchableOpacity>
);
})}
</Swiper>
</View>
);
if(this.state.swiperShow){
return (
<View style={{ height: imgHeight }}>
<Swiper
style={styles.swiperWrapper}
autoplay={true}
autoplayTimeout={6}
height={imgHeight}
dotStyle={{
width: 6,
height: 6,
}}
activeDotStyle={{
width: 6,
height: 6
}}
>
{this.state.swiperImgList.map((item, index) => {
{
/* console.log("图片item",item.img); */
}
return (
<TouchableOpacity style={styles.slide} key={index}>
<Image
style={styles.slideImg}
source={item.img}
width={Dimensions.get('window').width}
resizeMode="stretch"
/>
</TouchableOpacity>
);
})}
</Swiper>
</View>
);
}
}
render() {
console.log("首页的this.props", this);
... ...
... ... @@ -114,7 +114,7 @@ export default class Details extends Component {
</View>
</ScrollView>
<KeyboardAvoidingView
behavior="padding"
behavior="height"
keyboardVerticalOffset={60}
style={styles.KAVContainer}
contentContainerStyle={styles.contentContainerStyle}
... ... @@ -125,6 +125,7 @@ export default class Details extends Component {
style={styles.msgInput}
placeholder="留言"
onChangeText={content => this.setState({ content })}
underlineColorAndroid={'transparent'}
value={this.state.content}
autoCapitalize="none"
selectionColor="#1B9341"
... ... @@ -159,8 +160,8 @@ export default class Details extends Component {
return fetch(`https://devpay.brae.co/test/insurance/comment/get`, {
method: "POST",
headers: {
Accept: "application/json",
"Content-Type": "application/json"
// Accept: "application/json",
// "Content-Type": "application/json"
},
body: formData
})
... ... @@ -195,8 +196,8 @@ export default class Details extends Component {
return fetch(`https://devpay.brae.co/test/insurance/comment/add`, {
method: "POST",
headers: {
Accept: "application/json",
"Content-Type": "application/json"
// Accept: "application/json",
// "Content-Type": "application/json"
},
body: formData
})
... ...
... ... @@ -30,8 +30,8 @@ export default class InsuranceCircle extends Component {
return fetch(`https://devpay.brae.co/test/insurance/article`, {
method: "POST",
headers: {
Accept: "application/json",
"Content-Type": "application/json"
// Accept: "application/json",
// "Content-Type": "application/json"
}
})
.then(resp => {
... ...
... ... @@ -209,8 +209,8 @@ export default class Login extends Component {
return fetch(`https://devpay.brae.co/test/insurance/login`, {
method: "POST",
headers: {
Accept: "application/json",
"Content-Type": "application/json"
// Accept: "application/json",
// "Content-Type": "application/json"
},
body: formData
})
... ... @@ -283,8 +283,8 @@ export default class Login extends Component {
return fetch(`https://devpay.brae.co/test/insurance/register`, {
method: "POST",
headers: {
Accept: "application/json",
"Content-Type": "application/json"
// Accept: "application/json",
// "Content-Type": "application/json"
},
body: formData
})
... ...
... ... @@ -7,11 +7,11 @@ import {
TouchableOpacity,
Image,
Alert,
AlertIOS,
AsyncStorage,
Button
Button,
} from "react-native";
import { StackNavigator, TabNavigator } from "react-navigation";
import Dialog from "react-native-dialog";
export default class Mine extends Component {
constructor(props) {
... ... @@ -83,8 +83,6 @@ export default class Mine extends Component {
return fetch(`https://devpay.brae.co/test/insurance/change`, {
method: "POST",
headers: {
Accept: "application/json",
"Content-Type": "application/json"
},
body: formData
})
... ... @@ -120,8 +118,6 @@ export default class Mine extends Component {
return fetch(`https://devpay.brae.co/test/insurance/change`, {
method: "POST",
headers: {
Accept: "application/json",
"Content-Type": "application/json"
},
body: formData
})
... ... @@ -170,7 +166,13 @@ export default class Mine extends Component {
style={styles.itemContainer}
onPress={() => {
if (this.state.IS_LOGIN == "yes") {
AlertIOS.prompt("更改昵称", null, this.saveResponse1);
Dialog.prompt("更改昵称", null, [{
text: '确定',
onPress: (value) => {
this.saveResponse1(value)
},
}], undefined);
// AlertIOS.prompt("更改昵称", null, this.saveResponse1);
} else {
Alert.alert("请先登录账号")
}
... ... @@ -200,7 +202,13 @@ export default class Mine extends Component {
style={styles.itemContainer}
onPress={() => {
if (this.state.IS_LOGIN == "yes") {
AlertIOS.prompt("更改职业", null, this.saveResponse2);
Dialog.prompt("更改职业", null, [{
text: '确定',
onPress: (value) => {
this.saveResponse2(value)
},
}], undefined);
// AlertIOS.prompt("更改职业", null, this.saveResponse2);
} else {
Alert.alert("请先登录账号")
}
... ...