如何UIViewController在Swift中为子类添加自定义初始值设定项?
我创建了一个UIViewController看起来像这样的子类:
class MyViewController : UIViewController
{
init(leftVC:UIViewController, rightVC:UIViewController, gap:Int)
{
self.leftVC = leftVC;
self.rightVC = rightVC;
self.gap = gap;
super.init();
setupScrollView();
setupViewControllers();
}
}
Run Code Online (Sandbox Code Playgroud)
当我运行它时,我得到一个致命的错误:
致命错误:对类'MyApp.MyViewController'使用未实现的初始化程序'init(nibName:bundle :)'
我已经读过,在添加自定义初始化程序时,还必须覆盖,init(coder aDecoder:NSCoder)所以让我们覆盖它init,看看会发生什么:
override init(coder aDecoder: NSCoder)
{
super.init(coder: aDecoder);
}
Run Code Online (Sandbox Code Playgroud)
如果我添加这个,Xcode会抱怨self.leftVC is not initialized at super.init call.所以我想这也不是解决方案.所以我想知道如何将自定义初始化器正确地添加到ViewControllerSwift中的子类中(因为在Objective-C中这看起来不是问题)?
我必须创建一个UIView具有圆角,边框,阴影的自定义,并drawRect()重写其方法以提供自定义绘图代码,在该代码中将几条直线绘制到视图中(我需要使用快速,轻量级的方法,因为许多可以呈现这些视图).
我目前面临的问题是,一旦我drawRect()在视图类中重写(即使其中没有任何自定义代码),阴影也不再适用于圆角.请参阅附图中的差异:

在视图控制器中我使用以下代码:
view.layer.cornerRadius = 10;
view.layer.masksToBounds = true;
view.layer.borderColor = UIColor.grayColor().CGColor;
view.layer.borderWidth = 0.5;
view.layer.contentsScale = UIScreen.mainScreen().scale;
view.layer.shadowColor = UIColor.blackColor().CGColor;
view.layer.shadowOffset = CGSizeZero;
view.layer.shadowRadius = 5.0;
view.layer.shadowOpacity = 0.5;
view.layer.masksToBounds = false;
view.clipsToBounds = false;
Run Code Online (Sandbox Code Playgroud)
在被覆盖的drawContext()我会使用类似的东西:
var context:CGContext = UIGraphicsGetCurrentContext();
CGContextSetStrokeColorWithColor(context, UIColor.redColor().CGColor);
// Draw them with a 2.0 stroke width so they are a bit more visible.
CGContextSetLineWidth(context, 2.0);
CGContextMoveToPoint(context, 0.0, 0.0); //start at this point
CGContextAddLineToPoint(context, 20.0, 20.0); //draw to …Run Code Online (Sandbox Code Playgroud) 我为util/extensions创建了一个Swift框架项目,它将.framework文件编译并复制到我系统上的专用位置.我希望能够将此文件包含在其他项目中(使用库构建阶段/链接二进制文件).框架项目是一个Cocoa Touch Framework类型项目(从Xcode 6.1项目模板浏览器中选择).
但是当我尝试编译一个链接框架文件的项目时,我收到了这个警告:
ld:警告:忽略文件/Users/name/Projects/Xcode/Libs/swiftutils.framework/swiftutils,文件是为x86_64构建的,它不是被链接的体系结构(i386):/ Users/name/Projects/Xcode/Libs/swiftutils.framework/swiftutils
我可以对框架项目做些什么,以便它对其他iOS项目有效吗?这令人困惑,因为框架项目是一个Cocoa Touch Framework项目,它应该自然地与其他Cocoa Touch(即IOS)项目一起工作,不应该吗?
是否有任何变通方法可以使Flex编译器与64位JRE一起使用?如果我在Eclipse中的Ant构建文件中使用MXMLC任务它可以正常工作但是如果我尝试从命令行使用MXMLC(或者从Eclipse中的FDT尝试Run ...命令)它会失败,告诉我......
"加载时出错:C:\ Program Files\Java\jrrt-1.6.0\jre\bin\jrockit\jvm.dll"
(这是一个64位的JRockit运行时,但这无关紧要).
我有一个Ionic项目,我需要Cordova Camera插件(我现在已成功安装).但在我的项目中,Camera API仍然不可用,即我收到错误:
ReferenceError: Camera is not defined
at Scope.$scope.takePic
Run Code Online (Sandbox Code Playgroud)
如何激活在Ionic项目中使用的插件API?关于此的文档似乎是相当不存在或非常隐藏的.
Jenkins找不到我们最近更新的配置文件,在尝试了每个已知的解决方案后,我的想法已经用完了可能出错的地方.
构建作业失败并出现错误:
找不到匹配'xxxxx'的个人资料:Xcode找不到符合'xxxxx'的个人资料.
构建服务器是Mac,运行Xcode 8,我们正在使用Jenkins和Xcode插件.
在同一台机器上直接构建和签署Xcode 8是成功的,我通过双击安装了所有必需的配置文件.
有谁知道解决这个问题的任何可行的解决方案?
似乎没有任何指南仍然有效,所以我问如何在Eclipse中使用Egit将项目推送到GitHub.我遵循了一些指南,但结果是"规范与源存储库中的任何现有引用都不匹配".推送对话框中的错误.
我正在使用Eclipse 3.6.1和Egit 0.9.1.应该可以使用Egit不应该吗?但到目前为止,我的所有尝试都失败了,所以我开始怀疑Egit是不是只是一个大笑话或实验或其他什么?无论哪种方式,如果有人能够提供一个简短的逐步指导,以成功推动项目与Egit将是伟大的.
我已经搜索了这个问题的解决方案,但在我的情况下找不到任何似乎可以解决它的问题.我从UITapGestureRecognizer获得了上述异常.
这是简化的代码:
import UIKit;
class ViewController : UIViewController, UIScrollViewDelegate
{
@IBOutlet weak var scrollView:UIScrollView!;
var imageView:UIImageView!;
override func viewDidLoad()
{
super.viewDidLoad();
... set up imageView/scrollView here ...
let doubleTapRecognizer = UITapGestureRecognizer(target: self, action: "onScrollViewDoubleTapped");
doubleTapRecognizer.numberOfTapsRequired = 2;
doubleTapRecognizer.numberOfTouchesRequired = 1;
scrollView.addGestureRecognizer(doubleTapRecognizer);
}
func onScrollViewDoubleTapped(recognizer:UITapGestureRecognizer)
{
}
}
Run Code Online (Sandbox Code Playgroud)
任何人都可以告诉这段代码有什么问题吗?对我来说似乎都是正确的.我怀疑它与将ViewController指定为scrollView的委托(或反之亦然)有关?但是,ViewController被设置为scrollView的委托.但也许是其他导致这个错误的东西?
是否可以NSTableView在Interface Builder中创建具有预设行数的表,以便表可以用作表单?
我有一个视图,需要各种标签和文本字段的形式.我尝试过使用单个标签和文本字段,但看起来很糟糕.与NSForm附加内容相同,对布局和单元格内容施加了一些限制.
因此,表格视图看起来非常精致,因为表单视图.我最喜欢做的是将7 TextTableViewCells拖入NSTableViewIB中的静态并在第一列中设置标签并在第二列行中动态设置值.
但如果我建造它,我的七行就消失了.如何让NSTableView静态行为?
我收到错误:
无效参数不满足:[约束isKindOfClass:[NSLayoutConstraint class]]
对于我用Swift编写的自动布局约束代码:
let d:NSDictionary = ["scrollView": scrollView]
let hc:NSArray = [NSLayoutConstraint.constraintsWithVisualFormat("H:|[scrollView]|", options: NSLayoutFormatOptions.allZeros, metrics: nil, views: d)]
let vc:NSArray = [NSLayoutConstraint.constraintsWithVisualFormat("V:|[scrollView]|", options: NSLayoutFormatOptions.allZeros, metrics: nil, views: d)]
view.addConstraints(hc)
view.addConstraints(vc)
Run Code Online (Sandbox Code Playgroud)
有谁知道这个错误试图告诉我什么?据我所知,参数是NSArray带有NSLayoutConstraint对象的类型.我怀疑我必须明确定义数组,NSArray但这并没有解决它.
ios ×5
swift ×5
objective-c ×3
xcode ×3
cocoa ×2
64-bit ×1
camera ×1
code-signing ×1
compilation ×1
cordova ×1
drawrect ×1
eclipse ×1
egit ×1
flash ×1
frameworks ×1
github ×1
java ×1
jenkins ×1
macos ×1
mxmlc ×1
nstableview ×1
plugins ×1
push ×1
selector ×1
uiview ×1