小编iph*_*aaw的帖子

将参数附加到Swift中的button.addTarget动作

我试图将一个额外的参数传递给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)

任何想法?

谢谢你的帮助.

button uibutton swift

89
推荐指数
5
解决办法
12万
查看次数

使用Swift选择UITextField中的所有文本

你如何以编程方式选择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)

或者至少使文本立即可编辑?

谢谢

安德鲁

uitextfield swift

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

如何使用CGContext在swift中程序性地绘制矩形/线条

我已经在网上搜索了几天,试图找到关于如何在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)

rect cgcontext swift

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

如何从UILabel的第n行获取text/String?

有没有一种简单的方法来获取(或简单地显示)UILabel中给定行的文本?

我的UILabel正确地显示我的文本并将其精美地展示出来,但偶尔我需要能够显示某些行,但显然我需要知道UILabel如何定位所有这些.

我知道这可以通过子字符串轻松完成,但我需要知道该行的起点和终点.

或者,如果UILabel的框架有某种偏移并且隐藏了我不想看到的其他内容,我可以滚动UILabel.

我无法发现任何显示如何轻松完成此操作的内容.有人有什么好主意吗?

谢谢

iphaaw

uilabel core-text ios swift

14
推荐指数
5
解决办法
1万
查看次数

取消按钮和UIActionSheet的问题

如何确定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)

有没有更好的方法来设置它?

iphone uiactionsheet

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

在Swift中垂直居中backIndicatorImage

我已经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)

令人沮丧的是,图像暂时出现在正确的位置,然后被放回原来的位置.

我试过这个叫:

  • viewDidLoad中
  • viewWillLayoutSubviews
  • viewDidLayoutSubviews
  • viewDidAppear

没有快乐.

有人有什么建议吗?

uinavigationbar swift

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

如何访问类中的全局环境对象?

我有一个类需要更新全局环境对象。我可以整天在结构之间传递该环境对象,但是如何允许类对象访问同一变量?

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)

swiftui environmentobject

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

使用Swift在finder中显示文件夹的内容

我希望能够选择一个文件夹并在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,没有任何突出显示.我显然使用了错误的命令.

directory finder nsworkspace swift

10
推荐指数
3
解决办法
4761
查看次数

为什么添加属性时CoreData会崩溃?

每次我向CodeData对象模型添加一个新属性时,我必须清除我的数据库文件,否则我会收到以下错误:

2010-11-13 15:26:44.580 MyApp [67066:207] *由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'+ entityForName:无法找到实体名称'myApp'的NSManagedObjectModel

必须有一种方法可以添加额外的字段而不会丢失整个数据库.

我需要做些什么来保留我的数据?

iphone attributes core-data object-model

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

OSX:基于视图的表视图中的对象可能只能连接到表视图的委托

我已经设置了一个带有嵌入式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)

macos nsview nstableview swift

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