我在长时间休息后刚刚拿起 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 …
我有一个“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) 我让这个问题不受特定上下文的限制,因为我相信这对其他人会有所帮助:
我有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/,我发现它很有用,但仍然停留在此错误上。