小编Lea*_*ode的帖子

适用于 iOS 14.5 的 SwiftUI NavigationLink 不起作用

我在 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)

xcode ios swift swiftui

22
推荐指数
3
解决办法
4404
查看次数

无法看到部署的Firebase功能

我按照以下步骤操作:

  1. Firebase CLI(命令行界面)需要Node.js和npm,您可以按照https://nodejs.org/上的说明进行安装.

    • 安装Node.js也会安装npm
  2. 安装Node.js和npm后,通过npm安装Firebase CLI:
    npm install -g firebase-tools

    • 这将安装全局可用的firebase命令.要更新到最新版本,请重新运行相同的命令
  3. 初始化您的项目:
    a.运行firebase登录以通过浏览器登录并验证firebase工具.

    b.转到Firebase项目目录或创建目录

    C.运行firebase init函数

    • 该工具为您提供了使用npm安装依赖项的选项.如果要以其他方式管理依赖项,则可以安全地拒绝.
  4. 选择关联的firebase项目

  5. 选择Y以使用npm安装依赖项

  6. 转到目录设置firebase功能

  7. 使用您创建的函数编辑index.js文件

  8. 运行firebase使用--add添加Firebase项目

  9. 运行firebase deploy --only函数来部署该功能

完成所有这些后,我在部署完成后在终端中收到消息但在Firebase控制台中,当我单击"功能"选项卡时,没有列出任何功能!?

firebase google-cloud-functions firebase-console

21
推荐指数
4
解决办法
1万
查看次数

适用于iOS和Android应用的相同Firebase实例

我是Android新手,但我已经为iOS应用程序设置了Firebase后端.现在我开始编写应该访问相同Firebase后端的Android版本.

我的问题是这个......我是否需要为Android后端创建一个新的Firebase实例!?我希望使用我为iOS应用程序创建的相同Firebase实例?

android ios firebase

8
推荐指数
1
解决办法
4341
查看次数

适用于Firebase的云功能:管理员与根查找

掌握Firebase和JavaScript以编写云功能; 但我想我是否有人可以解释使用以下内容在云功能中查找和/或写入的优缺点?!

  1. 使用admin.database().ref()
    vs
  2. root.child()

我自己一直在使用admin.database.ref(),但我需要吗?root.child()相反,使用它是否同样好?

node.js firebase firebase-realtime-database google-cloud-functions

8
推荐指数
1
解决办法
1552
查看次数

使用电话号码在iOS上使用Firebase进行Swift身份验证导致崩溃

我关注的是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,一切正常!?

有没有人能够解决这个问题?

ios swift firebase-cloud-messaging

6
推荐指数
0
解决办法
1425
查看次数

SwiftUI 显示警报的问题 – 不会显示警报框

我有以下代码:

@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)

打印出以下输出:

  1. 退出按钮被点击
  2. .alert 将显示

我希望通过单击两个按钮之一来显示警报框并提示用户“取消”或“退出”;但它从不显示或提示用户,这是没有意义的!?

有没有人看到我的代码有什么问题!?这非常令人沮丧,因为它应该非常简单!?

alert swift swiftui

6
推荐指数
3
解决办法
2876
查看次数

在 SwiftUI 中的键盘上按下“下一个/返回”键时,选项卡到下一个文本字段

这严格适用于 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)

keyboard textfield swiftui

5
推荐指数
1
解决办法
484
查看次数

SwiftUI 也在 ScrollView 中创建自定义分段控件

下面是我创建标准分段控件的代码。

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 有点容易?有没有人做过这个。

我最好的例子是优步吃应用程序,当您选择一家餐厅时,您可以通过在自定义分段控件中选择一个选项来滚动到菜单的特定部分。

包括我希望定制的元素:

在此处输入图片说明

* 更新 *

最终设计的图像

在此处输入图片说明

ios segmentedcontrol swiftui

5
推荐指数
1
解决办法
6763
查看次数

单击swiftui中的按钮后如何根据条件显示不同的警报

我在这里发布之前做了一些研究,但我无法修复它。

在注册视图中,我希望用户注册。

我创建了一个链表,当用户注册用户名时,我的程序会检查用户名是否已被占用。

如果被占用,它应该发出警报,说明用户名已被占用,因为用户点击了注册按钮。

如果用户名没有被占用,那么它应该显示一个警报,说注册成功

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)

ios swift swiftui

4
推荐指数
1
解决办法
1810
查看次数

SwiftUI 在 Picker 对象中显示图像

我正在尝试实现 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)

picker ios swiftui

3
推荐指数
1
解决办法
7885
查看次数

在 Swift 中向新的 Firebase 用户发送电子邮件验证电子邮件

我已将我的应用设置为使用电子邮件地址和密码成功登录或创建 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)

swift firebase-authentication

1
推荐指数
1
解决办法
4219
查看次数

SwiftUI ScrollView 根据下拉列表的更改以编程方式滚动到顶部

我有以下代码:

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 滚动到顶部。

ios swift swiftui

1
推荐指数
1
解决办法
5567
查看次数