我在 Xcode 12.4 中有以下代码完美运行
ScrollView(.horizontal, showsIndicators: false) {
LazyHGrid(rows: rows, spacing: 0) {
HStack {
if (type == "Quiz") {
NavigationLink(destination: Quiz(id: quiz.id)) {
VStack(alignment: .leading) {
Text("Quiz")
.font(.headline)
.foregroundColor(.white)
.padding(.top, 8)
.padding(.leading)
}
.background(Color.green)
.cornerRadius(12)
.shadow(color: .green, radius: 3, x: 0.0, y: 0.0)
}
} else {
NavigationLink(destination: Survey(id: survey.id)) {
VStack(alignment: .leading) {
Text("Survey")
.font(.headline)
.foregroundColor(.white)
.padding(.top, 8)
.padding(.leading)
}
.background(Color.green)
.cornerRadius(12)
.shadow(color: .green, radius: 3, x: 0.0, y: 0.0)
}
} // End If
if (type == …Run Code Online (Sandbox Code Playgroud) 我按照以下步骤操作:
Firebase CLI(命令行界面)需要Node.js和npm,您可以按照https://nodejs.org/上的说明进行安装.
安装Node.js和npm后,通过npm安装Firebase CLI:
npm install -g firebase-tools
初始化您的项目:
a.运行firebase登录以通过浏览器登录并验证firebase工具.
b.转到Firebase项目目录或创建目录
C.运行firebase init函数
选择关联的firebase项目
选择Y以使用npm安装依赖项
转到目录设置firebase功能
使用您创建的函数编辑index.js文件
运行firebase使用--add添加Firebase项目
运行firebase deploy --only函数来部署该功能
完成所有这些后,我在部署完成后在终端中收到消息但在Firebase控制台中,当我单击"功能"选项卡时,没有列出任何功能!?
我是Android新手,但我已经为iOS应用程序设置了Firebase后端.现在我开始编写应该访问相同Firebase后端的Android版本.
我的问题是这个......我是否需要为Android后端创建一个新的Firebase实例!?我希望使用我为iOS应用程序创建的相同Firebase实例?
掌握Firebase和JavaScript以编写云功能; 但我想我是否有人可以解释使用以下内容在云功能中查找和/或写入的优缺点?!
admin.database().ref()root.child()我自己一直在使用admin.database.ref(),但我需要吗?root.child()相反,使用它是否同样好?
node.js firebase firebase-realtime-database google-cloud-functions
我关注的是Firebase文档:https://firebase.google.com/docs/auth/ios/phone-auth
尝试使用电话号码在iOS上使用Firebase进行身份验证,当我的代码到达此处时,我遇到了致命的崩溃:
PhoneAuthProvider.provider().verifyPhoneNumber(self.phoneNumberTextField.text!, uiDelegate: nil) { (verificationID, error) in
if let error = error {
print("error: \(error.localizedDescription)")
return
}
// Perform Seque to VerifictionCodeViewController
self.performSegue(withIdentifier: "enterVerificationCode", sender: self)
}
Run Code Online (Sandbox Code Playgroud)
错误是:libc++abi.dylib: terminating with uncaught exception of type NSException在我的appDelegate.swift文件中.
如果我使用该函数的旧版本和"已弃用"版本
PhoneAuthProvider.provider().verifyPhoneNumber(self.phoneNumberTextField.text!) { (verificationID, error) in
if let error = error {
print("error: \(error.localizedDescription)")
return
}
// Perform Seque to VerifictionCodeViewController
self.performSegue(withIdentifier: "enterVerificationCode", sender: self)
}
Run Code Online (Sandbox Code Playgroud)
没有功能中新添加的uiDelegate: nil部分verifyPhoneNumber,一切正常!?
有没有人能够解决这个问题?
我有以下代码:
@State private var signoutAlert = false
var body: some View {
Button(action: {
self.signoutAlert = true
print("signout button clicked")
}) {
Text("Sign Out")
}
.alert(isPresented: $signoutAlert) {
print(".alert will display")
//
return Alert(title: Text("Sign Out"), message: Text("Are you sure you want to Sign Out?"), primaryButton: .destructive(Text("Sign Out")) {
print("Signing out....")
self.session.signOut()
self.presentationMode.wrappedValue.dismiss()
}, secondaryButton: .cancel())
}
}
Run Code Online (Sandbox Code Playgroud)
打印出以下输出:
我希望通过单击两个按钮之一来显示警报框并提示用户“取消”或“退出”;但它从不显示或提示用户,这是没有意义的!?
有没有人看到我的代码有什么问题!?这非常令人沮丧,因为它应该非常简单!?
这严格适用于 SwiftUI。
当用户点击键盘上的“返回”键时,我想让键盘移动到下一个可用的文本字段。
我有以下观点:
var body: some View {
VStack {
NavigationView {
Form {
TextField("First name", text: $model.firstname)
.tag(1)
TextField("Last name", text: $model.lastname)
.tag(2)
}
.navigationBarTitle("Add a Person", displayMode: .inline)
}
}
}
Run Code Online (Sandbox Code Playgroud)
以及应该允许选项卡的以下代码:
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
let nextTag = textField.tag + 1
if let nextResponder = textField.superview?.viewWithTag(nextTag) {
nextResponder.becomeFirstResponder()
} else {
textField.resignFirstResponder()
}
return true
}
Run Code Online (Sandbox Code Playgroud)
我只是不确定如何在 SwiftUI 中实现它?
我如何将它分配给文本字段的委托?!
****更新****
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
print("Current Tag: ", textField.tag) // …Run Code Online (Sandbox Code Playgroud) 下面是我创建标准分段控件的代码。
struct ContentView: View {
@State private var favoriteColor = 0
var colors = ["Red", "Green", "Blue"]
var body: some View {
VStack {
Picker(selection: $favoriteColor, label: Text("What is your favorite color?")) {
ForEach(0..<colors.count) { index in
Text(self.colors[index]).tag(index)
}
}.pickerStyle(SegmentedPickerStyle())
Text("Value: \(colors[favoriteColor])")
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是如何修改它以获得自定义的分段控件,我可以在其中将边框与我自己的颜色一起四舍五入,因为使用 UIKit 有点容易?有没有人做过这个。
我最好的例子是优步吃应用程序,当您选择一家餐厅时,您可以通过在自定义分段控件中选择一个选项来滚动到菜单的特定部分。
包括我希望定制的元素:
* 更新 *
最终设计的图像
我在这里发布之前做了一些研究,但我无法修复它。
在注册视图中,我希望用户注册。
我创建了一个链表,当用户注册用户名时,我的程序会检查用户名是否已被占用。
如果被占用,它应该发出警报,说明用户名已被占用,因为用户点击了注册按钮。
如果用户名没有被占用,那么它应该显示一个警报,说注册成功
import SwiftUI
struct registerScreen: View {
@State var username: String = ""
@State var password: String = ""
@State private var sucessfulRegister = false
@State private var failedRegister = false
var body: some View {
VStack {
TextField()
SecureField()
Button(action: {
let userinfo = linkedList()
if (userinfo.contains(value: self.username)){
// self.failedRegister = true
self.failedRegister.toggle()
// show alert that it failed
} else {
userinfo.insert(value: user(username: self.username, password: self.password))
// show alert that it is successfull
self.sucessfulRegister.toggle() …Run Code Online (Sandbox Code Playgroud) 我正在尝试实现 UIKit 国家/地区选择器的 SwiftUI 版本。
用户输入一个表单,其中有一个 Picker 对象,该对象应创建包含所有国家/地区以及国旗图像的选取器。
请参阅下面的屏幕截图:
第一个屏幕是您第一次尝试添加评论时的表单
用户单击“原产地国家”选择器对象,它会导航到“国家/地区”视图。** 这就是问题所在,图像无法渲染!?**
用户选择一个国家/地区,然后关闭选取器视图以返回到表单视图,并显示选择,效果完美,显示所选国家/地区的图像和名称。
有谁能弄清楚是否有解决方案,或者这是 iOS 13 的错误!?
代码如下:
Form {
TextField("Name", text: $name)
TextField("Description", text: $desc)
Picker(selection: $countryOrigin, label: Text("Country of Origin")) {
Section(header: SearchBar(text: $fetcher.searchQuery)) {
List(fetcher.country) { country in
HStack() {
Image(uiImage: UIImage(contentsOfFile: Bundle.main.path(forResource: "CountryPicker", ofType: "bundle")! + "/Images/\(country.id).png")!)
.clipShape(Circle())
Text(country.name)
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud) 我已将我的应用设置为使用电子邮件地址和密码成功登录或创建 Firebase 帐户。我现在想要做的是检查用户是否已验证他们的电子邮件,如果没有,则向他们发送 Firebase 允许我们编写的验证电子邮件。
@IBAction func createAccountTapped(_ sender: Any) {
if let email = emailTextfield.text, let password = passwordTextfield.text {
Auth.auth().createUser(withEmail: email, password: password, completion: { user, error in
if let firebaseError = error {
print(firebaseError.localizedDescription)
return
}
self.presentTabBar()
})
}
}
@IBAction func loginTapped(_ sender: Any) {
if let email = emailTextfield.text, let password = passwordTextfield.text {
Auth.auth().signIn(withEmail: email, password: password, completion: {(user, error) in
if let firebaseError = error {
print(firebaseError.localizedDescription)
return
}
self.presentTabBar()
})
}
} …Run Code Online (Sandbox Code Playgroud) 我有以下代码:
var body: some View {
VStack {
ScrollView {
VStack {
ForEach(1...7, id: \.self) { num in
Text("\(num)")
.font(.title3)
.padding([.top, .bottom], 5)
.onTapGesture {
self.getGames()
}
}
}
}
ScrollView() {
GameCell(games: $games, picks: self.$playerPicks)
}
.onAppear(perform: getGames)
}
}
Run Code Online (Sandbox Code Playgroud)
它根据num的值获取所有游戏和全部;因为它应该基于.onAppear(perform: getGames)
当选择 num 时,它会使用 GameCell 刷新主 ScrollVeiw,但是如果主 ScrollView (带有 GameCells)滚动到任何位置,当数据刷新时,它会停留在该位置...有没有办法让它滚动到主 ScrollView 的顶部(带有 GameCells)?
更新
我更新了上面的代码,有两个滚动视图,我想让第二个滚动视图在每次在第一个滚动视图中选择新值时将 GameCell 滚动到顶部。