我试图将一个额外的参数传递给buttonClicked操作,但无法确定Swift中的语法应该是什么.
button.addTarget(self, action: "buttonClicked:", forControlEvents: UIControlEvents.TouchUpInside)
Run Code Online (Sandbox Code Playgroud)
任何我的buttonClicked方法:
func buttonClicked(sender:UIButton)
{
println("hello")
}
Run Code Online (Sandbox Code Playgroud)
任何想法?
谢谢你的帮助.
你如何以编程方式选择Swift文本字段中的所有文本?
var textField:UITextField = UITextField()
textField.frame = CGRectMake(2, 25, 200, 20)
textField.text = "hello"
textField.font = UIFont(name: "Verdana", size: 12)
textField.textColor = UIColor.blackColor()
textField.backgroundColor = UIColor.whiteColor()
Run Code Online (Sandbox Code Playgroud)
或者至少使文本立即可编辑?
谢谢
安德鲁
我已经在网上搜索了几天,试图找到关于如何在Swift中以程序方式绘制矩形或线条的最简单的代码示例.我已经看过如何通过覆盖DrawRect命令来完成它.我相信你可以创建一个CGContext然后绘制成一个图像,但我很想看到一些简单的代码示例.或者这是一种可怕的方法?谢谢.
class MenuController: UIViewController
{
override func viewDidLoad()
{
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
self.view.backgroundColor = UIColor.blackColor()
var logoFrame = CGRectMake(0,0,118,40)
var imageView = UIImageView(frame: logoFrame)
imageView.image = UIImage(named:"Logo")
self.view.addSubview(imageView)
//need to draw a rectangle here
}
}
Run Code Online (Sandbox Code Playgroud) 有没有一种简单的方法来获取(或简单地显示)UILabel中给定行的文本?
我的UILabel正确地显示我的文本并将其精美地展示出来,但偶尔我需要能够显示某些行,但显然我需要知道UILabel如何定位所有这些.
我知道这可以通过子字符串轻松完成,但我需要知道该行的起点和终点.
或者,如果UILabel的框架有某种偏移并且隐藏了我不想看到的其他内容,我可以滚动UILabel.
我无法发现任何显示如何轻松完成此操作的内容.有人有什么好主意吗?
谢谢
iphaaw
如何确定UIActionSheet上是否按下了取消按钮?
我的UIActionSheet设置如下:
-(IBAction)fileButtonPressed
{
UIActionSheet *mymenu = [[UIActionSheet alloc]
initWithTitle:@"Select Folder"
delegate:self
cancelButtonTitle:@"Cancel"
destructiveButtonTitle:nil
otherButtonTitles:nil];
for (i=0; i<3; i++)
{
[mymenu addButtonWithTitle:@"Button Name"];
}
[mymenu showInView:self.view];
}
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是我无法区分取消按钮和所选的第一个按钮.
-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
NSString *option = [actionSheet buttonTitleAtIndex:buttonIndex];
//buttonIndex == 0 if the cancel button is pressed or
//if the first item is pressed.
}
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法来设置它?
我已经backIndicatorImage使用此代码将自定义图像放入:
var backButton = UIImage(named: "locationbar_back")?.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal)
self.navigationController!.navigationBar.backIndicatorImage = backButton
self.navigationController!.navigationBar.backIndicatorTransitionMaskImage = backButton
Run Code Online (Sandbox Code Playgroud)
图像比标准图形略高,所以我希望能够垂直居中.
我尝试使用此代码在导航栏中找到图像(不是很优雅)(欢迎任何更好的建议):
for myview in self.navigationController!.navigationBar.subviews as [UIView]
{
if myview.frame.width == 17 //need a better way of identifying object
{
var newFrame = myview.frame
newFrame.origin.y = 6.0
myview.frame = newFrame
}
}
Run Code Online (Sandbox Code Playgroud)
令人沮丧的是,图像暂时出现在正确的位置,然后被放回原来的位置.
我试过这个叫:
没有快乐.
有人有什么建议吗?
我有一个类需要更新全局环境对象。我可以整天在结构之间传递该环境对象,但是如何允许类对象访问同一变量?
import SwiftUI
class Global: ObservableObject
{
@Published var num = 10
}
class MyClass:ObservableObject
{
@Published var mode = 1
@EnvironmentObject var global: Global
func updateMode()
{
self.mode += 1
global.num += 1
}
}
@main
struct MyApp: App
{
let settings = Global()
var body: some Scene {
WindowGroup {
ContentView()
.environmentObject(settings)
}
}
}
struct ContentView: View
{
@EnvironmentObject var global: Global
@ObservedObject var myClass = MyClass()
var body: some View
{
VStack
{
Text("Setting \(global.num)")
Text("Mode …Run Code Online (Sandbox Code Playgroud) 我希望能够选择一个文件夹并在Finder中显示其内容.我已设法选择文件夹本身并选择文件夹中的文件.但我不知道如何显示空文件夹的内容.
例如
文件夹A /文件夹B.
我想显示文件夹B的内容(可能是空的).
我写了以下代码:
func showFolder(fileName : String)
{
var dataPath = homeDirectory.stringByAppendingPathComponent(fileName)
var urlPath = NSURL(fileURLWithPath: dataPath)
var selectedURLs = [urlPath!]
NSWorkspace.sharedWorkspace().activateFileViewerSelectingURLs(selectedURLs)
}
Run Code Online (Sandbox Code Playgroud)
这仅打开文件夹A突出显示文件夹B. 这非常接近,但并不完全正确.
我需要能够打开文件夹B,没有任何突出显示.我显然使用了错误的命令.
每次我向CodeData对象模型添加一个新属性时,我必须清除我的数据库文件,否则我会收到以下错误:
2010-11-13 15:26:44.580 MyApp [67066:207] *由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'+ entityForName:无法找到实体名称'myApp'的NSManagedObjectModel
必须有一种方法可以添加额外的字段而不会丢失整个数据库.
我需要做些什么来保留我的数据?
我已经设置了一个带有嵌入式NSTableView的NSView.
我试图为对表视图单元格进行更改时运行NSTableViewCell的操作:
import Cocoa
class MyView: NSView
{
override func drawRect(dirtyRect: NSRect)
{
super.drawRect(dirtyRect)
}
@IBAction func valEntered2(sender: AnyObject)
{
Swift.print("valueEntered2")
}
}
Run Code Online (Sandbox Code Playgroud)
虽然这种方法在故事板上使用NSViewController之前已经运行良好,但是当我编译此代码时它会发出警告:
由'Table View Cell'发送的动作'valEntered2:'连接到'View',一个无效的目标(基于视图的对象内部表视图,它们只连接到表视图的委托.)
所以它似乎不喜欢NSView中的动作所以我已经将NSTableView子类化了,所以我可以将它移动到那里:
class MyTable: NSTableView, NSTableViewDataSource, NSTableViewDelegate
{
let appDelegate = NSApplication.sharedApplication().delegate as! AppDelegate
override init(frame frameRect: NSRect)
{
super.init(frame: frameRect)
}
required init?(coder: NSCoder)
{
super.init(coder: coder)
self.setDataSource(self)
self.setDelegate(self)
}
override func drawRect(dirtyRect: NSRect)
{
super.drawRect(dirtyRect)
}
func numberOfRowsInTableView(tableView: NSTableView) -> Int
{
return 5
}
func tableView(tableView: NSTableView, viewForTableColumn tableColumn: NSTableColumn?, row: …Run Code Online (Sandbox Code Playgroud) swift ×7
iphone ×2
attributes ×1
button ×1
cgcontext ×1
core-data ×1
core-text ×1
directory ×1
finder ×1
ios ×1
macos ×1
nstableview ×1
nsview ×1
nsworkspace ×1
object-model ×1
rect ×1
swiftui ×1
uibutton ×1
uilabel ×1
uitextfield ×1