我正在尝试使用react-navigation,但是当我将每个屏幕的组件移动到多个文件中时,我无法使用它.我总是得到这个错误:"路由'Home'的组件必须是React组件".如果我将所有代码移动到一个文件中,则不会发生此错误,因此我不确定区别是什么.
这是我的App.js:
import React from 'react';
import { StackNavigator } from 'react-navigation';
import { AppRegistry, StyleSheet, Text, View, TouchableHighlight } from 'react-native';
import { HomeScreen } from './screens/HomeScreen';
import { JoinScreen from './screens/JoinScreen';
import { HostScreen } from './screens/HostScreen';
const Root = StackNavigator(
{
Home: {
screen: HomeScreen,
},
Details: {
screen: JoinScreen,
}
},
{
initialRouteName: 'Home',
headerMode: 'none',
}
);
export default class App extends React.Component {
render() {
return (
<Root />
)
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的.screens/HomeScreen.js
import …Run Code Online (Sandbox Code Playgroud) 我正在尝试实现一个浮动在键盘上的 textView (如 iMessage 应用程序),我想使用它,inputAccessoryViewController以便我可以拥有视图控制器,而不仅仅是通过覆盖inputAccessoryView. 我编写了下面的代码,但在 iOS 9 中存在问题,当您点击时,textView 会消失,而键盘上的 textView 会弹出。它在 iOS 10 中运行良好。
class ViewController: UIViewController {
var textEntryController = TextEntryController.fromNIB()
override var inputAccessoryViewController: UIInputViewController? {
return self.textEntryController
}
override var canBecomeFirstResponder: Bool {
return true
}
}
Run Code Online (Sandbox Code Playgroud)
我试图找出出了什么问题,所以我重写了这两个方法inputAccessoryViewController,并inputAccessoryView在每个方法中设置了断点。
override var inputAccessoryViewController: UIInputViewController? {
return self.textEntryController //break point
}
override var inputAccessoryView: UIView? {
return self.textEntryController.view //break point
}
Run Code Online (Sandbox Code Playgroud)
这解决了 iOS 9 上 textview 消失的问题,但我认为这是不对的。这可能会破坏视图控制器层次结构。
观察:在 iOS 9 和 iOS …
这个表定义一直有效,直到我意识到具有可为空的列意味着我需要使用 Option[String] 而不仅仅是 String。这是我所做的唯一更改,这就是我的代码现在的样子。
class RespondentTableDef(tag: Tag) extends Table[Respondent](tag, "respondent") {
def id = column[Long]("id", O.PrimaryKey)
def uuid = column[String]("uuid")
def version = column[Long]("version")
def task = column[Long]("task")
def firstName = column[Option[String]]("first_name")
def lastName = column[Option[String]]("last_name")
def ageGroup = column[Option[String]]("age_group")
def incomeLevel = column[Option[String]]("income_level")
def employmentStatus = column[Option[String]]("employment_status")
def maritalStatus = column[Option[String]]("marital_status")
def housingStatus = column[Option[String]]("housing_status")
def educationStatus = column[Option[String]]("education_status")
def gender = column[Option[String]]("gender")
override def * =
(id, uuid, version, task, firstName, lastName, ageGroup, incomeLevel, employmentStatus, maritalStatus, housingStatus, educationStatus, …Run Code Online (Sandbox Code Playgroud) 我想做这样的事情:
var x = ["10","20",30"]
var y = x.map(Int.init)
Run Code Online (Sandbox Code Playgroud)
但是我得到了这个错误
对成员'init()'的模糊引用
我知道我可以写
var y = x.map { Int($0) }
Run Code Online (Sandbox Code Playgroud)
但我想知道是否还有另一种方式.