默认 swift 项目,视图控制器嵌入在 navigationController 中并推送到下一个 UIHostingController。
如何从 SimpleView 调用 navigationController?.popViewController ?
视图控制器:
@IBOutlet weak var button: UIButton?
override func viewDidLoad() {
super.viewDidLoad()
button?.addTarget(self,
action: #selector(showNewSwiftUIController),
for: .touchUpInside)
}
@objc func showNewSwiftUIController() {
let vc = UIHostingController(rootView:SimpleView())
navigationController?.pushViewController(vc, animated: true)
}
Run Code Online (Sandbox Code Playgroud)
斯威夫特用户界面:
struct SimpleView: View {
var body: some View {
Text("SimpleView")
.foregroundColor(.black)
}
}
Run Code Online (Sandbox Code Playgroud) 使用 SwiftUI,我知道如何在整个屏幕上设置一个简单颜色的背景。所以只有后台忽略安全区域。但是当我想用线性渐变来做这件事时,我不知道这样做。
我的观点有一个简单的背景:
import SwiftUI
struct Settings : View {
var body: some View {
ScrollView {
VStack {
Text("Boussole")
.color(Color(red: 52/255, green: 73/255, blue: 94/255, opacity: 1.0))
.multilineTextAlignment(.leading)
.font(.system(size: 28))
.padding(.top, 15)
.frame(minWidth: 0, maxWidth: .infinity, alignment: .leading)
Toggle(isOn: .constant(false)) {
Text("Afficher le vrai nord")
.font(.system(size: 20))
.color(Color(red: 52/255, green: 73/255, blue: 94/255, opacity: 1.0))
}
.padding(.top, 10)
Toggle(isOn: .constant(true)) {
Text("Activer la vibration")
.font(.system(size: 20))
.color(Color(red: 52/255, green: 73/255, blue: 94/255, opacity: 1.0))
}
.padding(.top, 10)
.padding(.bottom, 20) …Run Code Online (Sandbox Code Playgroud) 处理示例应用程序。目标是从 Master 中的 CoreData 中提取一个列表,然后单击一个列表以转到详细信息,您可以在其中编辑信息并保存。当您在细节中编辑“名称”时,它不仅会更新细节以反映更改,而且还会反映母版上的更改。我已经尝试了很多方法来实现这一点,但到目前为止还没有找到答案。
// Code generation is turned OFF in the xcdatamodeld file
public class EntityName: NSManagedObject, Identifiable {
@NSManaged public var name: String
@NSManaged public var active: Bool
}
extension EntityName {
static func allEntityNameFetchRequest() -> NSFetchRequest<EntityName> {
let request: NSFetchRequest<EntityName> = EntityName.fetchRequest() as! NSFetchRequest<EntityName>
request.sortDescriptors = [NSSortDescriptor(key: "name", ascending: true)]
return request
}
}
struct MasterView: View {
@Environment(\.managedObjectContext) var managedObjectContext
@FetchRequest(fetchRequest: EntityName.allEntityNameFetchRequest()) var allEntityNames: FetchedResults<EntityName>
var body: some View {
NavigationView {
List {
ForEach(self.allEntityNames) …Run Code Online (Sandbox Code Playgroud) 我想在 watchOS 6 上创建一个安静的简单应用程序,但是在 Apple 更改了 Xcode 11 beta 5 中的 ObjectBindig 之后,我的应用程序不再运行。我只是想在两个视图之间同步数据。
所以我用新的@Published 重写了我的应用程序,但我无法真正设置它:
class UserInput: ObservableObject {
@Published var score: Int = 0
}
struct ContentView: View {
@ObservedObject var input = UserInput()
var body: some View {
VStack {
Text("Hello World\(self.input.score)")
Button(action: {self.input.score += 1})
{
Text("Adder")
}
NavigationLink(destination: secondScreen()) {
Text("Next View")
}
}
}
}
struct secondScreen: View {
@ObservedObject var input = UserInput()
var body: some View {
VStack {
Text("Button has been pushed …Run Code Online (Sandbox Code Playgroud) 如何在 SwiftUI 中居中导航栏标题?
var body: some View {
NavigationView {
.navigationBarTitle("Todo Lists")
}
}
Run Code Online (Sandbox Code Playgroud) 多年来,这个问题已经被问过很多次了,但它在 Swift 5 中再次发生了变化,尤其是在最近的两个测试版中。
读取 JSON 文件似乎很简单:
func readJSONFileData(_ fileName: String) -> Array<Dictionary<String, Any>> {
var resultArr: Array<Dictionary<String, Any>> = []
if let url = Bundle.main.url(forResource: "file", withExtension: "json") {
if let data = try? Data(contentsOf: url) {
print("Data raw: ", data)
if let json = try? (JSONSerialization.jsonObject(with: data, options: []) as! NSArray) {
print("JSON: ", json)
if let arr = json as? Array<Any> {
print("Array: ", arr)
resultArr = arr.map { $0 as! Dictionary<String, Any> …Run Code Online (Sandbox Code Playgroud) 在 Xcode 11 beta 5 或 6 中,我现有的依赖于URLSession.DataTaskPublisher停止工作的代码。似乎DataTaskPublisher永远不会发布任何值,但我不知道为什么。
我已经尝试过.sink并.handleEvents作为订阅者。我已经与Just发布者一起测试了 .sink并确认它在那里收到了一个值。
我也试过给DataTaskPublisheraURL和给它 a URLRequest。我尝试了对 API 的请求,包括授权标头,以及对 google.com 和 apple.com 的基本请求。我尝试使用URLSession.shared和创建URLSession. 我也试过使用和不使用mapanddecode运算符。
我已经使用XCTest期望来确认测试每次都会超时,即使我给它 4 分钟的超时。
我刚刚创建了一个新的示例项目,并在根视图控制器中使用以下代码复制了问题:
override func viewDidLoad() {
super.viewDidLoad()
print("view did load")
URLSession.shared.dataTaskPublisher(for: URL(string: "http://apple.com")!)
.handleEvents(receiveSubscription: { (sub) in
print(sub)
}, receiveOutput: { (response) in
print(response)
}, receiveCompletion: { (completion) in
print(completion)
}, receiveCancel: { …Run Code Online (Sandbox Code Playgroud) 将 xcode 升级到 v.11 后,当我复制/粘贴代码时,缩进消失了。下面的示例显示了我复制代码时的外观。有人知道如何解决这个问题吗?
public func configure(_ view: WithdrawelView) {
view.paySumLabel.text = self.pay
view.expensesSumLabel.text = self.expenses
view.refundSumLabel.text = self.refund
view.taxLastYearSumLabel.text = self.taxLastYear
view.futureWithdrawelSumLabel.text = self.futureWithdrawel
view.balanceSumLabel.text = self.balance
}
public func configure(_ view: WithdrawelView) {
view.paySumLabel.text = self.pay
view.expensesSumLabel.text = self.expenses
view.refundSumLabel.text = self.refund
view.taxLastYearSumLabel.text = self.taxLastYear
view.futureWithdrawelSumLabel.text = self.futureWithdrawel
view.balanceSumLabel.text = self.balance
}
Run Code Online (Sandbox Code Playgroud) 我在 IOS App Store 中有一个用 XCode 开发的 HTML5 应用程序,我希望为 Mac App Store 创建该应用程序的副本。我认为这很容易,但我找不到任何简单的教程可以遵循,当然不是使用 XCode 11 和 Swift 5.1。我不想走 Mac OS 10.15 中提供的自动路线
当我构建 XCode 11 附带的默认 Hello World 应用程序时,它无法在 10.14 上运行!我还不想升级到 10.15,主要是因为我希望该应用程序能够在早期版本的 MacOS 上运行
任何能为我提供 WKWebView 应用程序加载本地文件(在 Max OS 10.14 上的 XCode 11 中运行)的工作示例的人都将是我的英雄。
我目前从 Xcode 11.5 收到一个奇怪的警告(我使用的是发行版):
Mac Catalyst 部署目标“IPHONEOS_DEPLOYMENT_TARGET”设置为 13.5,但支持的部署目标版本范围为 13.1 到 13.4.99。
我进行了网络搜索,但没有看到任何人提到此消息。
现在,我可以将我的部署设置回 iOS 13.0(我没有在我的项目中使用 iOS 13.5 中的任何特殊功能),但是想知道为什么会发出这个特殊警告?当然,Apple 还没有决定停止对 Mac Catalyst 的支持,是吗?
xcode11 ×10
swift ×5
swiftui ×5
xcode ×3
ios ×2
ios13 ×2
auto-indent ×1
combine ×1
core-data ×1
filesystems ×1
gradient ×1
html5-apps ×1
mac-catalyst ×1
macos ×1