小编Mic*_*sen的帖子

从AppDelegate(Swift)连接到ViewController

我使用标准的Xcode Swift模板(使用StoryBoards)创建了一个新的OS X Cocoa应用程序.

我已经在AppDelegate.swift中实现了一个IBAction来处理用户何时从"文件"菜单中选择"打开...".如果所选文件是有效的图像文件,我创建一个NSImage,然后我想在ViewController的视图中显示.

    @IBAction func openFile(sender: NSMenuItem) {
    var openPanel = NSOpenPanel()
    openPanel.beginWithCompletionHandler { (result :Int) -> Void in
        if result == NSFileHandlingPanelOKButton {
            if let imageURL = openPanel.URL {
                let image = NSImage(contentsOfURL: imageURL)
                // PRESENT image IN THE VIEW CONTROLLER
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

但是,我没有看到任何方法从AppDelegate连接到ViewController.我只是设法找到了我应该看看self.window的建议!在AppDelegate中,但AppDelegate中没有窗口这样的东西.

谢谢Michael Knudsen

macos xcode cocoa swift

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

Cocoa Autolayout和子视图的大小调整

我正在使用Autolayout让我的子视图正确调整大小时遇到​​麻烦.为了说明我的观点,我将一个简约的例子放在一起.

首先,我创建了一个新的NSViewController,并为其添加了一个子视图(在这种特殊情况下为NSTextView),并添加了Autolayout约束.

在此输入图像描述

然后我为我的MainMenu.xib添加了一个自定义视图,并为此设置了Autolayout约束.

在此输入图像描述

最后,我创建了一个视图控制器的实例,并将其视图放在我的自定义视图中.

#import "AppDelegate.h"
#import "MyViewController.h"

@interface AppDelegate()
@property (weak) IBOutlet NSView *customView;
@end

@implementation AppDelegate

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    MyViewController *myViewController = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil];

    [self.customView addSubview:myViewController.view];
    myViewController.view.frame = self.customView.bounds;
}

@end
Run Code Online (Sandbox Code Playgroud)

由于在两个xib文件中都选中了"自动调整子视图",因此我希望在调整主窗口大小时调整NSTextView的大小.但是,它只是留在原地.

在此输入图像描述

我在这里错过了什么?这让我困惑了好几天了.

谢谢Michael Knudsen

cocoa objective-c nsview autolayout

5
推荐指数
2
解决办法
2978
查看次数

memcpy的替代方案

我使用Arduino来解析从本地网络上的应用程序发送的UDP包.消息包含36个字节的信息.前四个字节表示一个(单精度)浮点数,接下来的四个字节表示另一个,等等.

Arduino函数udp.read()将数据作为字符读取,最后得到一个数组

char data[36] = { ... };
Run Code Online (Sandbox Code Playgroud)

我现在正在寻找一种方法将其转换为相应的九个浮点数.我发现的唯一解决方案是重复使用这个技巧:

float f;
char b[] = {data[0], data[1], data[2], data[3]};
memcpy(&f, &b, sizeof(f));
Run Code Online (Sandbox Code Playgroud)

但是,我相信一定有更好的方法.而不是复制内存块,我可以逃避只使用指针,并以某种方式告诉C将b解释为浮点数?

谢谢

c floating-point pointers arduino memcpy

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

Snakemake 可变数量的文件

我处于一种情况,我想将我的工作流程分散到可变数量的块中,我事先不知道。也许通过具体来解释问题最容易:

有人递给我使用bcl2fastqno-lane-splitting选项解复用的 FASTQ 文件。我想根据车道拆分这些文件,单独映射每个车道,然后最后再次收集所有内容。但是,我事先不知道车道数。

理想情况下,我想要这样的解决方案,

rule split_fastq_file: (...)  # results in N FASTQ files
rule map_fastq_file: (...)  # do this N times
rule merge_bam_files: (...)  # merge the N BAM files
Run Code Online (Sandbox Code Playgroud)

但我不确定这是可能的。该expand功能要求我知道车道数,并且无法看到如何为此使用通配符。

我应该说我对 Snakemake 比较陌生,而且我可能完全误解了 Snakemake 的工作原理。我花了一些时间来习惯于通过关注输出文件然后倒退来思考“颠倒”的事情。

snakemake

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