我定义了一个angular.dart组件,如下所示:
@NgComponent(
selector: 'dartcomp',
templateUrl: 'dartComp.html',
publishAs: 'ctrl',
map: const
{
'val' : '@val'
}
)
class DartComp
{
String val;
calc(a,b) =>a+b;
}
Run Code Online (Sandbox Code Playgroud)
HTML中的用法是:
<dartcomp id="dc"></dartcomp>
Run Code Online (Sandbox Code Playgroud)
如何从主dart访问angular.dart组件的属性val或方法calc()
对组件的调用就像
querySelector("#dc").val = "Frank";
Run Code Online (Sandbox Code Playgroud)
扔:
类'UnknownElement'没有实例setter'val ='.
NoSuchMethodError : method not found: 'val='
Receiver: Instance of 'UnknownElement'
Arguments: ["Frank"]
Run Code Online (Sandbox Code Playgroud)
这个错误是什么?
我有一个简单的例子。我使用 ctrl 将左 button1 和 label1 连接到控制器类。
如何以编程方式对右侧的 button2 label2 执行相同的操作(无需按住 ctrl 拖动)
那是我的代码:
class ViewController: NSViewController {
@IBOutlet weak var label1: NSTextField! //connected with ctrl-drag
@IBOutlet weak var button1: NSButton! //connected with ctrl-drag
@IBOutlet weak var label2: NSTextField! //not yet connected
@IBOutlet weak var button2: NSButton! //not yet connected
@IBAction func button1Pressed(_ sender: Any) //connected with ctrl-drag
{ label1.stringValue = "button-I"
button1.title = "pressed"
}
@IBAction func button2Pressed(_ sender: Any) //not yet connected
{ label2.stringValue = "button-II"
button2.title = …
Run Code Online (Sandbox Code Playgroud) 我创建了一个类ListView,这是一个非常简单的Tableview。
如果我用IB实例化它,一切看起来都会很好。如果我以编程方式实例化它也是如此。
如果在a中以编程方式实例化它NSPopover
,则表的每一行都会得到浅灰色背景。
这是从哪里来的?
这里的代码:
class ViewController: NSViewController {
let popover = NSPopover()
@IBOutlet weak var label: NSTextField!
@IBAction func bu1(_ sender: Any) {
popover.show(relativeTo: label.visibleRect, of: label, preferredEdge: NSRectEdge.maxY)
}
override func viewDidLoad() {
super.viewDidLoad()
let scrollListView = NSScrollView()
let listView = ListView(frame: NSRect(x:100, y: 100, width: 100, height: 100))
scrollListView.documentView = listView
let viewController = NSViewController()
viewController.view = scrollListView
popover.appearance = NSAppearance(named: NSAppearance.Name.vibrantLight)
popover.animates = false
popover.contentViewController = viewController
}
}
class ListView: NSTableView, NSTableViewDataSource, NSTableViewDelegate …
Run Code Online (Sandbox Code Playgroud) 如果通过调用服务出现视图,我想设置一个@State 变量。
调用服务会onAppear
导致应用程序崩溃。
在按钮操作中调用服务工作正常。
struct ContentView: View {
@State var dirContent : [String] = []
var body: some View {
VStack {
List {
ForEach(dirContent, id: \.self){
fileName in
Text(fileName)
}
}
Button("Get Data"){self.dirContent = Service.getData()}
}
.onAppear{
//self.dirContent = Service.getData2() // Crashes!!
}
}
}
class Service{
static func getData()->[String]{
// ... get Data from somewhere
return ["line1", "line2"]
}
static func getData2()->[String]{
// ... get Data from somewhere
return ["line4", "line5"]
}
}
Run Code Online (Sandbox Code Playgroud)
怎么了?
在 MacOS 上的 SwiftUI 应用程序中,我希望允许用户从 MacOS 文件系统中选择一个文件。
我尝试使用 AppKits NSOpenPanel
。
我试过这样,但我无法创建 NSViewControllerRepresentable。
struct ContentView: View {
@State var filename = "Filename"
@State var showFileChooser = false
var body: some View {
HStack {
Text(filename)
Button("select File")
{ self.showFileChooser = true
}.sheet(isPresented: $showFileChooser)
{ FileChooser()
}
}
.frame(maxWidth: .infinity, maxHeight: .infinity)
}
}
struct FileChooser : {
func makeNSViewController(context: Context) -> NSOpenPanel {
NSOpenPanel()
}
func updateNSViewControler(_ nsView: NSOpenPanel, context: Context) {
}
}
Run Code Online (Sandbox Code Playgroud)
这是正确的方法吗?
怎么了?
我使用 AsyncImage() 获取要在视图中显示的图像。
struct Pic: View {
var body: some View {
let url = FileManager.default.url(forUbiquityContainerIdentifier: nil)?.appendingPathComponent("Documents").appendingPathComponent("IMG_5328.jpeg")
AsyncImage(url: url) { image in
image
.resizable()
// if(image.orientation == .right) {
// .rotationEffect(.degrees(90))
// }
.scaledToFit()
} placeholder: {
Color.red
}
}
}
Run Code Online (Sandbox Code Playgroud)
图像文件 (IMG_5328.jpeg) 的方向为 6(逆时针 90 度),但图像未通过自动旋转进行渲染。
我怎样才能获得手动旋转它的方向。
使用 UIImage 会自动完成此操作。
let url = FileManager.default.url(forUbiquityContainerIdentifier: nil)?.appendingPathComponent("Documents").appendingPathComponent("IMG_5328.jpeg")
let imageData = try! Data(contentsOf: url!)
let uiImage = UIImage(data: imageData)!
Run Code Online (Sandbox Code Playgroud) 如果在单元格中单击或单击单元格详细信息披露按钮,我想从表格单元格切换到两个不同的视图控制器.
如果我按住Ctrl键拖动第二个segue,则删除第一个.我究竟做错了什么?
Tnx Mica
我想将列表中的行距减少为空。
\n\n我尝试减少填充没有成功。\n设置 \xc2\xb4.environment(.defaultMinListRowHeight, 0)\xc2\xb4 有很大帮助。
\n\nstruct ContentView: View {\n @State var data : [String] = ["first","second","3rd","4th","5th","6th"]\n\n var body: some View {\n VStack {\n List {\n ForEach(data, id: \\.self)\n { item in\n Text("\\(item)")\n .padding(0)\n //.frame(height: 60)\n .background(Color.yellow)\n }\n //.frame(height: 60)\n .padding(0)\n .background(Color.blue)\n }\n .environment(\\.defaultMinListRowHeight, 0)\n .onAppear { UITableView.appearance().separatorStyle = .none }\n .onDisappear { UITableView.appearance().separatorStyle = .singleLine }\n }\n }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n将 \xc2\xb4separatorStyle\xc2\xb4 更改为 \xc2\xb4.none\xc2\xb4 仅删除了该行,但留下了空格。
\n列表行或行之间的分隔符是否有额外的 \xc2\xb4hidden\xc2\xb4 视图?\n如何控制?
会使用ScrollView
而不是一个List
好的解决方案吗?
ScrollView(.horizontal, showsIndicators: true)\n {\n …
Run Code Online (Sandbox Code Playgroud) 我有这个小示例应用程序,它创建了我的 SwiftUI MacOS 应用程序的多个 Windows。
是否可以:
@main
struct MultiWindowApp: App {
@State var gvm = GlobalViewModel()
var body: some Scene {
WindowGroup {
MainView()
.environmentObject(gvm)
}
WindowGroup("Secondary") {
SecondaryView(bgColor: .blue)
.environmentObject(gvm)
}
.handlesExternalEvents(matching: Set(arrayLiteral: "*"))
}
}
struct MainView: View {
@Environment(\.openURL) var openURL
@EnvironmentObject var vm : GlobalViewModel
var body: some View {
VStack {
Text("MainView")
Button("Open Secondary") {
if let url = URL(string: "OpenNewWindowApp://bla") {
openURL(url)
}
//List of …
Run Code Online (Sandbox Code Playgroud) 我尝试通过设置变量来关闭弹出窗口,该变量显示为 false。
示例代码的行为非常奇怪。有没有更好的方法使用“取消”按钮以编程方式关闭弹出窗口?
import SwiftUI
struct ContentView: View {
let lines = ["line 1", "line 2","line 3"]
var body: some View {
List {
ForEach(lines, id: \.self)
{ Line(text: $0)
}
}
}
}
struct Line: View {
@State var text: String
@State var showSheet = false
var body: some View {
VStack
{ Text("\(text)")
.onTapGesture {
self.showSheet = true
}
}.popover( isPresented: self.$showSheet,
arrowEdge: .trailing
)
{ Pop(showSheet: self.$showSheet)
}
}
}
struct Pop: View {
@Binding var showSheet: …
Run Code Online (Sandbox Code Playgroud) swiftui ×6
macos ×5
swift ×4
nspopover ×2
angular-dart ×1
cocoa ×1
cocoa-touch ×1
dart ×1
ibaction ×1
iboutlet ×1
image ×1
ios ×1
iphone ×1
nstableview ×1
popover ×1
segue ×1
storyboard ×1
swiftui-list ×1
uiimage ×1
xcode ×1