小编iph*_*aaw的帖子

一个View Controller上有多个NSTableView

我想在一个ViewController上有多个NSTableViews.我用以下代码实现了第一个TableView:

class MainViewController: NSViewController
{

    @IBOutlet weak var tableView: NSTableView!

    override func viewDidLoad() 
    {
        super.viewDidLoad()

        let nib = NSNib(nibNamed: "MyCellView", bundle: NSBundle.mainBundle())
        tableView.registerNib(nib!, forIdentifier: "MyCellView")

        let appDelegate = NSApplication.sharedApplication().delegate as! AppDelegate
        appDelegate.view = self
    }
}

extension MainViewController: NSTableViewDataSource, NSTableViewDelegate 
{
    func numberOfRowsInTableView(tableView: NSTableView) -> Int 
    {
        return 5
    }

    func tableView(tableView: NSTableView, heightOfRow row: Int) -> CGFloat
    {
        return 25
    }

    func tableView(tableView: NSTableView, viewForTableColumn tableColumn: NSTableColumn?, row: Int) -> NSView? 
    {
        let cell = tableView.makeViewWithIdentifier("MyCellView", owner: self) as! …
Run Code Online (Sandbox Code Playgroud)

nstableview swift

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

Swift:如何在 NSAlert 中使 NSTextField 成为第一响应者

我有一个简单的登录对话框,要求输入密码。在模态上是一个 NSSecureTextField。我希望这是第一响应者,但我一直无法找到如何做到这一点?

func loginDialog(question: String) -> String 
{
    let alert = NSAlert()
    alert.messageText = question
    alert.alertStyle = .warning
    alert.addButton(withTitle: "Login")
    alert.addButton(withTitle: "Cancel")

    let passField = NSSecureTextField(frame: NSRect(x: 0, y: 24, width: 250, height: 24))
    let stackViewer = NSStackView(frame: NSRect(x: 0, y: 0, width: 250, height: 50))

    stackViewer.addSubview(passField)

    alert.accessoryView = stackViewer

    //this doesn't do anything :-(
    alert.window.makeFirstResponder(passField)

    let x = alert.runModal()
    if (x == NSApplication.ModalResponse.alertFirstButtonReturn)
    {
        return (passField.stringValue)
    }
    else
    {
        return ("")
    }
}
Run Code Online (Sandbox Code Playgroud)

我也无法让 becomeFirstResponder 工作。

更新:我收到错误:错误:设置为窗口的第一响应者,但它在不同的窗口中((空))!当视图被释放时,这最终会崩溃。第一响应者将被设置为 nil。

所以我明白为什么,但只是不知道如何解决。

macos nstextfield nsalert becomefirstresponder swift

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

Elixir:从for循环返回值

我要求Elixir中的for循环返回一个计算值.

这是我的简单示例:

a = 0
for i <- 1..10
do
    a = a + 1
    IO.inspect a
end

IO.inspect a
Run Code Online (Sandbox Code Playgroud)

这是输出:

warning: variable i is unused
  Untitled 15:2

2
2
2 
2
2
2
2 
2
2
2
1
Run Code Online (Sandbox Code Playgroud)

我知道我没有使用过,可以用来代替本例中的a,但这不是问题.问题是如何让for循环返回变量a = 10?

for-loop elixir

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

Swift:UITableView 部分标题样式

我有一个 UITableView 有几个标题,但字体大小比我想要的大得多:

在此处输入图片说明

我在系统首选项中看到 Apple 使用大写的部分标题使用较小的字体大小,底部对齐如下:

在此处输入图片说明

我知道我可以使用 viewForHeaderInSection 创建我自己的布局,但我的问题是有一个简单的选项可以调用这个标准的操作系统样式,而无需重新发明轮子?

uitableview swift

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

在演示过程中呈现UIAlertController

我试图立即显示两个不同的警报。第一个是加载指示器。第二个是警报,告诉用户他们正在执行的操作是否成功,或者是否遵循UDP消息。我已出于演示目的简化了代码。

我的问题是,尽管我在调用第二个警报之前就关闭了loadingAlert,但仍然收到错误消息:

警告:在进行演示时,尝试在ViewController上呈现UIAlertController!

我的第二次警报从未显示。

这是我的Swift 4代码:

func getUpdate()
{    
    let loading = alert(title: "Performing Task...")

    DispatchQueue.global(qos: .userInitiated).async {
        let server:UDPServer=UDPServer(address:"0.0.0.0", port:5006)
        let (data,_,_) = server.recv(1024)

        DispatchQueue.main.async
        {
            loading.dismiss(animated: false, completion: nil)

            OperationQueue.main.addOperation
            {
                alert(title: "How can I show this alert?")
            }
        }
    }
}

func alert(title:String) -> UIAlertController
{
    let alertController = UIAlertController(title: title, message: "", preferredStyle: UIAlertControllerStyle.alert)
    ...
    rootViewController?.present(alertController, animated: true, completion: nil)

    return alertController
}
Run Code Online (Sandbox Code Playgroud)

最好的方法是什么?

swift uialertcontroller

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

Elixir:嵌套If语句

我有一段简单的代码,在大多数语言中都非常简单。我真的很想知道如何做到这一点。我如何将其转换为Elixir,而不会收到可怕的变量不安全警告?

dc = 1
sd = 5
sdi = 6
calc = 1
bc = 1
dd = 10

if (dc == 1) 
    csd = sd
    bd = sd   
    p = sdi  

    if (calc == 1 && bc != 1) do
        count = 1
    else
        count = 20
    end       

else
    csd = dd  
    bd = dd  
    p = dd 

    count = 1
end
Run Code Online (Sandbox Code Playgroud)

elixir nested-if

0
推荐指数
1
解决办法
668
查看次数