小编nc1*_*c14的帖子

TabView Swift UI 中的 NavigationView

我在长时间休息后刚刚拿起 SwiftUI,但我不明白为什么我不能将 aNavigation View放在Tab View.

我希望我的视图Navigation View成为.tabItem主应用程序导航的一部分,所以我正在尝试这样做:

struct ContentView: View {
    var body: some View {
            TabView {
            
        NavigationView {
            
            .tabItem {
                Text("Home")
            }
                    
            Text("Tab bar test")
                .navigationBarTitle("Page One")
        }
}
Run Code Online (Sandbox Code Playgroud)

这不适用于错误消息

Cannot infer contextual base in reference to member 'tabItem'
Run Code Online (Sandbox Code Playgroud)

但是当我尝试这个时

    var body: some View {
        TabView {
        
    NavigationView {
                
        Text("Tab bar test")
            .navigationBarTitle("Page One")
    }
}
    .tabItem {
        Image(systemName: "1.circle")
        Text("Home")
    }
}
Run Code Online (Sandbox Code Playgroud)

它构建得很好,但标签栏不显示。

我希望对其他人有用的主要问题是......

为什么我不能通过直接Navigation View嵌套在标签栏项目中.tabItem …

tabview swift navigationview swift5 swiftui

6
推荐指数
2
解决办法
2万
查看次数

Realm Swift - 保存对另一个对象的引用

我认为阅读完此处此处后这会非常简单,但我有点卡住了。

我有一个“favouriteWorkout”对象,如下所示:

class FavouriteObject: Object {
    @objc dynamic var favouriteWorkoutName = ""
    @objc dynamic var workoutReference = WorkoutSessionObject()

    override class func primaryKey() -> String? {
        return "favouriteWorkoutName"
    }
}
Run Code Online (Sandbox Code Playgroud)

我在这里尝试做的是WorkoutSessionObject在将锻炼保存为收藏夹时引用 Realm 中的 a,该链接来自 WorkoutName。

我的 WorkoutSessionObject 有一个主键,workoutID它是一个UUID字符串。它看起来像这样:

class WorkoutSessionObject: Object {
    @objc dynamic var workoutID = UUID().uuidString
    @objc dynamic var workoutType = ""
    let exercises = List<WorkoutExercise>()
    @objc dynamic var totalExerciseCount = 0
    @objc dynamic var rounds = 0
    @objc dynamic …
Run Code Online (Sandbox Code Playgroud)

realm ios swift

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

Swift 4-仅将一个文本字段标识为委托进行editDidEnd等

我让这个问题不受特定上下文的限制,因为我相信这对其他人会有所帮助:

我有2个IB出口文本字段:

@IBOutlet weak var textField1: UITextField!
@IBOutlet weak var textField2: UITextField!
Run Code Online (Sandbox Code Playgroud)

我希望能够禁用页面上的按钮,直到两个按钮都正确填写为止,以便在ViewDidLoad()中使用以下委托(我已经在我的VC中添加了TextFieldDelegate。)

override func viewDidLoad() {
    textField1.delegate = self
    textField2.delegate = self
}
Run Code Online (Sandbox Code Playgroud)

然后,我将使用一些功能来进行表单验证和采取特定的操作,但是为了简单起见,我们假设它只是打印到控制台。

我只想检查textField1中的验证,而不检查textField2中的验证。即,所需的输出是当用户开始编辑textField1时输出的内容,但是如果用户编辑textField2则不输出任何内容。

我目前正在使用:

func textFieldDidBeginEditing(_ textField1: UITextField) {
    print("TextField did begin editing method called")
}
Run Code Online (Sandbox Code Playgroud)

但这是在编辑任一textField时输出的。

我以为我指定了_ textField1,所以不确定为什么两者都触发了它?

有一些答案可以解决Swift 3及更早版本的类似问题。特别是,有一个答案引用了此链接http://sourcefreeze.com/uitextfield-and-uitextfield-delegate-in-swift/,我发现它很有用,但仍然停留在此错误上。

ios swift swift4

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

标签 统计

swift ×3

ios ×2

navigationview ×1

realm ×1

swift4 ×1

swift5 ×1

swiftui ×1

tabview ×1