小编Mik*_*rty的帖子

iPhone:创建一个可重用的组件(控件),它包含一些Interface Builder部件和一些代码

我想为iPhone创建一个可重用的组件(自定义控件).它包含在View上预先安排的几个标准控件,然后是一些相关的代码.我的目标是:

  1. 我希望能够使用Interface Builder在我的自定义控件中布局子视图;
  2. 我想以某种方式打包整个事情,以便我可以相当容易地将生成的自定义组件拖放到其他视图中,而无需手动重新连接一堆插座等等.(一点点手动重新布线很好,我只是不想做吨和吨.)

让我更具体一点,并具体告诉你我的控制应该做什么.在我的应用程序中,我有时需要点击Web服务来验证用户输入的数据.在等待来自Web服务的回复时,我想显示一个微调器(一个活动指示器).如果Web服务使用成功代码回复,我想显示"成功"复选标记.如果Web服务回复错误代码,我想显示错误图标和错误消息.

执行此操作的一次性方法非常简单:我只创建一个包含UIActivityIndi​​catorView的UIView,两个UIImages(一个用于成功图标,一个用于错误图标),以及一个用于错误消息的UILabel.这是一个截图,相关部分标记为红色:

替代文字

然后我将这些部分连接到插座,然后在控制器中放入一些代码.

但是,我如何打包这些部分 - 代码和一小部分视图 - 以便我可以重用它们?这里有一些我发现的东西让我在那里,但不是那么好:

  • 我可以将视图和控件的集合拖到库的自定义对象部分; 然后,我可以将它们拖回到其他视图中.但是(a)它忘记了哪些图像与两个UIImages相关联,(b)有很多手动重新布线的四个或五个插座,(c)最重要的是,这并没有带来代码.(也许有一种简单的方法来连接代码?)
  • 我想我可以创建一个IBPlugin; 不确定这是否会有所帮助,而且看起来很多工作,而且我不完全清楚IBPlugins是否适用于iPhone开发.
  • 我想,"嗯,有与之相关的代码 - 闻起来就像一个控制器",所以我尝试WebServiceValidatorController用相关的XIB文件创建一个自定义控制器(例如).这实际上感觉很有希望,但在那时我无法弄清楚在Interface Builder中如何将此组件拖到其他视图上.它WebServiceValidatorController是一个控制器,而不是一个视图,所以我可以将它拖到文档窗口中,但不能拖到视图中.

我有一种感觉,我错过了一些明显的东西......

iphone xcode interface-builder

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

如何在使用git remote url进行npm安装时指定注册表?

我希望能够使用此处指定的URL克隆git存储库

<protocol>://[<user>[:<password>]@]<hostname>[:<port>][:][/]<path>[#<commit-ish>]
Run Code Online (Sandbox Code Playgroud)

我收到一个错误说

错误的ERR!404注册表在https://registry.npmjs.org/XYZ上为GET返回404

所以我也应该能够在执行时指定注册表,因为模块应该从内部存储库中获取.

使用git remote url进行npm安装时是否可以指定注册表

git-clone node.js npm-install

20
推荐指数
3
解决办法
4万
查看次数

Bazel: How do you get the path to a generated file?

In Bazel, given a build target, how would a script (which is running outside of Bazel) get the path to the generated file?

Scenario: I'm using Bazel to do the build, and then when it's done, I want to copy the result to a server. I just need to know what files to copy. I could hard-code the list of files, but I would prefer not to do that.

A simple example: This Bazel script:

genrule(
    name = "main",
    srcs …
Run Code Online (Sandbox Code Playgroud)

bazel

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

iOS:当手机旋转时,导航栏的titleView无法正确调整大小

我正在编写一个iPhone应用程序(与大多数应用程序一样)支持自动旋转:您可以旋转手机,其视图可以旋转并适当调整大小.

但我正在为navigationItem.titleView(导航栏的标题区域)分配一个自定义视图,当手机旋转时,我无法正确调整视图大小.

我知道你在想什么,"只要设置了autoresizingMaskUIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight,"但它不是那么简单.当然,如果我没有设置我的视图autoresizingMask,那么我的视图不会调整大小; 我希望它能够调整大小.

问题是,如果我做的设置它autoresizingMask,然后它会调整,只要正确的这一观点是可见的; 但titleView在这种情况下,它的大小搞砸了:

  1. 将手机保持在纵向模式下运行应用程序.一切都很好看.
  2. 做一些导致应用程序将另一个视图推送到导航堆栈的东西.例如,单击导致呼叫的表格行或按钮[self.navigationController pushViewController:someOtherViewController animated:YES].
  3. 在查看子控制器时,将手机旋转到横向.
  4. 单击"返回"按钮返回顶级视图.此时,标题视图混乱:尽管您正在横向模式下握住手机,但标题视图的大小仍然像在纵向模式下一样.
  5. 最后,将手机旋转回纵向模式.现在,事情变得更糟:标题视图的尺寸缩小(因为导航栏变得越来越小),但因为它已经是太小了,现在是多少太小.

如果您想自己重现,请按照以下步骤操作(这有点工作):

  1. 使用Xcode的"基于导航的应用程序"向导制作应用程序.
  2. 设置它以使顶级表视图具有行,当您单击它们时,将详细视图推送到导航堆栈.
  3. 在顶级视图控制器和详细视图控制器中包含此代码:

    - (BOOL)shouldAutorotateToInterfaceOrientation:
            (UIInterfaceOrientation)interfaceOrientation {
        return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
    }
    
    Run Code Online (Sandbox Code Playgroud)
  4. 仅在顶级视图控制器中包含此代码:

    - (void)viewDidLoad {
        [super viewDidLoad];
    
        // Create "Back" button
        UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Master"
            style:UIBarButtonItemStylePlain target:nil action:nil];
        self.navigationItem.backBarButtonItem = backButton;
        [backButton release];
    
        // Create title view
        UILabel* titleView = [[[UILabel alloc] initWithFrame:CGRectMake(0,0,500,38)] …
    Run Code Online (Sandbox Code Playgroud)

iphone uinavigationbar ios

13
推荐指数
2
解决办法
3万
查看次数

调整STL向量的大小会擦除/使其先前的内容无效吗?

它似乎不是(示例程序),但我能确定吗?

// does resizing an STL vector erase/invalidate it's previous contents?
#include <stdio.h>
#include <vector>
using namespace std ;

void print( vector<int>& t )
{
  for( int i = 0 ; i < t.size() ; i++ )
    printf( "%d ", t[i] ) ;
  puts("");
}

int main()
{
  vector<int> t ;
  t.resize( 12,9999 ) ;
  print(t) ;

  t.resize( 15, 10000 ) ;
  print(t) ;
}
Run Code Online (Sandbox Code Playgroud)

c++ stl vector

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

XML Schema - 依赖于可选属性存在的子元素

是否可以在XSD中定义以下场景:

  1. 父元素具有一个属性

    是可选的.

  2. 如果属性不是

    present in XML, at least one child
    
    element must exists.
    
    Run Code Online (Sandbox Code Playgroud)
  3. 如果

    attribute is present, there can be
    
    zero or more child elements.
    
    Run Code Online (Sandbox Code Playgroud)

例:

有效

<parent externel-source="some_name" />



<parent externel-source="some_name">

  <child>some value</child>

</parent>



<parent>

  <child> some value</child>

</parent>
Run Code Online (Sandbox Code Playgroud)

无效

<parent />
Run Code Online (Sandbox Code Playgroud)

xml validation xsd

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

确定GC释放了哪些JavaScript对象

我想在任何桌面浏览器中找到一种方法来确定垃圾收集正在释放哪些JavaScript分配的对象.请注意,我不是想跟踪"泄漏".泄漏是没有被释放的物体.

在Firefox中,我正在查看的Web应用程序偶尔会出现断言(停止响应键击超过1秒); 分析显示,在此期间,浏览器正在执行冗长的GC.在之前的几秒钟内,添加了大量内存(小块,不是一次全部).当GC发生时,几乎所有内存都被释放.

我试图搞清楚的是:什么所有这些短命的对象啊?我很想知道他们的价值观,他们的类型,或者他们分配给JS的地方.

Web应用程序在所有浏览器中展示了这些相同的分配模式(尽管只有Firefox似乎遭受了漫长的GC); 所以我很乐意使用任何浏览器(Mac或Windows)来调试它.

我已经想出如何使用Chrome的开发工具来查看泄漏的对象,但正如我上面提到的,泄漏并不是我关注的问题.我无法找到一种方法来查看分配了哪些对象然后释放.

javascript garbage-collection google-chrome-devtools firefox-developer-tools

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

有没有办法查看正在运行的 Bazel 操作的助记符?

(来自https://groups.google.com/d/msg/bazel-discuss/XrtKLhH1bgI/B9xZn_aVAAAJ

在我们使用 Bazel 进行构建的项目中,我使用了远程缓存 ( --spawn_strategy=remote),我们必须进行一些微调,以便为某些操作关闭缓存。例如,当我们生成 tar 文件时,我们不想使用远程缓存,因为 (a) 在本地构建 tar 文件与下载它们一样快,并且 (b) 我们的一些 tar 文件可能非常庞大。

所以我想让我们的 .bazelrc 文件为某些操作指定不同的策略,例如--strategy=PackageTar=standalone.

这是棘手的部分:为了覆盖策略,您需要知道助记符。例如,对于pkg_tar规则,相关操作具有助记符PackageTar。我在 bazel 源中发现了这一点。其他一些比较难弄清楚。

有什么办法可以让 bazel 告诉我它正在执行的操作的助记符吗?我研究了各种选项,例如--profile, --explain, --verbose_explanations, --subcommands,但找不到办法。

bazel

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

你如何在sbt命令行查询`mainClass`的值?

在sbt命令行中,build.sbt只需键入其名称即可查找大多数变量- 例如:

> libraryDependencies
[info] List(org.scala-lang:scala-library:2.10.3, junit:junit:latest.revision)
Run Code Online (Sandbox Code Playgroud)

但这不适用于mainClass:

> mainClass
[success] Total time: 0 s, completed Jul 16, 2014 7:20:58 AM
Run Code Online (Sandbox Code Playgroud)

大概这是因为你设置价值的mainClass方式并不那么简单 - 你必须把这样的东西放在build.sbt:

mainClass in (Compile, run)        := Some("com.example.MyClass")
mainClass in (Compile, packageBin) := Some("com.example.MyClass")
mainClass in (Test,    run)        := Some("com.example.MyClass")
mainClass in (Test,    packageBin) := Some("com.example.MyClass")
Run Code Online (Sandbox Code Playgroud)

事实上,事实证明,它mainClass实际上根本不是一个普通的价值 - 它是一个TaskKey,而不是一个SettingKey.因此,当您在sbt命令行键入其名称时,我认为sbt实际上正在运行一些代码.

那么...我在sbt命令行输入什么来查询,例如,mainClass in (Compile, run)?的值?(或者,所有的值mainClass.)

scala sbt

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