我已经写了一段时间的iOS应用程序,并逐渐从完全以编程方式的UI到集中使用Interface Builder.我现在正在考虑为我的一些新项目使用新的故事板功能,但我没有足够的经验或知识来计算这样做的优点和缺点. 任何人都可以提供一些关于何时使用Storyboarding以及何时浪费时间的示例或信息?
我可以右键单击并从我的自定义UIView子类文件拖动到storyboard元素以连接它们,但无法通过其他方式执行此操作.我相信这是一个Xcode错误.有什么办法可以解决这个问题吗?这不是第一次它已经发生并且令人讨厌.
我已经尝试过多次清理和重启Xcode而没有运气.
这是有效的(右键从swift文件的IBAction到故事板)
顺便说一下,我正在使用Xcode 8.1和Swift 3.0.
更新:我不是在寻找如何连接IBOutlets/IBActions的答案,因为正如我上面提到的那样(以及截图中),我已经能够连接它们并且应用程序运行良好.问题是更多关于为什么Xcode不允许我从Storyboard> Swift文件连接,但让我从Swift文件> Storyboard这样做.如果这个问题具有误导性,我很抱歉.
我一直在阅读本教程,"选项2:原型单元"我对所有步骤都表示赞同,但是,以下代码给出了一个错误:
@interface MTViewController : UITableViewController
@end
Run Code Online (Sandbox Code Playgroud)
错误消息是:
故事板"Main"中带有标识符"UIViewController-BYZ-38-t0r"的实例化视图控制器,但没有获得UITableView.
这是我试过的 - 我改变UITableViewController了UIViewController,错误就消失了.但是,表格视图仍然是空白的.你能告诉我为什么会这样吗?
如何使用尺寸类别唯一识别iPhone 6和iPhone 6以及纵向屏幕?
我的应用程序在iPhone 4和iPhone 5中看起来不错,但由于屏幕尺寸的原因,iPhone 6和6中的空白空间相同.虽然使用自动布局我不能仅为iPhone 6和6加上单独增加字体大小或视图大小.我知道我们可以使用大小类来改变字体大小和视图大小.但在我的情况下,不知道该怎么做.
使用xCode 6.1和我的应用程序支持从iOS 7到最新的iOS 8.1.我希望只在故事板中使用解决方案,因为我在故事板中完全完成了我的UI设计.如果storyboard的功能有限以满足我的需求,请告诉我如何通过应用程序实现相同的代码?
使用osx的故事板绘制到NSView的过程是什么?我已经在NSViewController中添加了一个NSView.然后,我添加了一些约束和插座.

接下来,我添加了一些代码来改变颜色:import Cocoa
class ViewController: NSViewController {
@IBOutlet var box: NSView!
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewWillAppear() {
box.layer?.backgroundColor = NSColor.blueColor().CGColor
//box.layer?.setNeedsDisplay()
}
override var representedObject: AnyObject? {
didSet {
// Update the view, if already loaded.
}
}
}
Run Code Online (Sandbox Code Playgroud)
我想做自定义绘图和更改NSView的颜色.我过去在iOS上进行过复杂的绘图,但我完全陷入困境.有谁看到我做错了什么?
我觉得我在这里错过了一招
我只想在调用applicationDidBecomeActive时调用当前活动视图控制器上的viewDidLoad或viewDidAppear,这样当我再次从后台启动应用程序时,我可以重置一些动画或其他任何动画.我的一些观点并不关心,但其他人真的需要知道.
我正在使用Storyboards,我的app委托文件具有标准功能 - 但所有都使用EMPTY主体.例如,didFinishLaunchingWithOptions只返回YES而不执行任何操作.故事板自动完成我猜的一切.
那么如何从我相当空白,无信息的应用代表那里与当前的视图控制器进行通信?
对于那些不知道我在说什么的人,Xcode 6.0增加了新功能,IBDesignable和IBInspectable.
使用IBInspectable属性标记自定义视图时,这些属性将显示在IB中的"属性"检查器中.
同样,当您使用IBDesignable标记自定义UIView子类时,Xcode会编译您的视图并调用代码以在Xcode窗口中直接呈现视图对象,以便您可以看到它们的外观.
在自定义视图中添加IBDesignable和IBInspectable属性的技术在Swift和Objective-C中非常相似.IBInspectable属性显示在Interface Builder Attributes Inspector中,无论您使用哪种语言来定义它们.
我在Objective-C中创建了一个UIView类,并在Swift中创建了UIView的扩展,它将视图底层的borderWidth,cornerRadius,borderColor和layerBackgroundColor属性提升为视图的属性.如果更改属性,则扩展名/类别会根据需要键入转换,并将更改转发给图层.
IBInspectable部分运作良好.我看到并可以在IB属性检查器中设置新属性.
我可以在上周发誓,我的视图类别/扩展名上的IBDesignable属性也正常工作,我可以在IB中看到我的自定义UIView类别渲染,它具有更改的图层属性.本周它没有用.
我是产生幻觉的吗?
现有系统类的类别/扩展可以在使用IBDesignable设置时在Interface Builder中绘制自定义UI吗?
interface-builder ios xcode-storyboard ibdesignable ibinspectable
我似乎没有得到这个我不断得到的SIGABRT.我有这个故事板iOS应用程序,在故事板中我有一个UITableViewController.现在,我可以拿一个TVC的单元格并使其推动"segue"视图控制器,但是如果我需要在某些条件下停止"segue"动作呢?显然你不能,因为prepareForSegue:sender:方法不允许它,它似乎是转换即将执行时被调用的唯一回调.
所以我猜我可以进入tableView:didSelectRowAtIndexPath:并以编程方式执行segue.不是最理想的,但仍然......
好吧,事实证明我错了.或者至少,我做错了什么.最明显的方法是
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[self performSegueWithIdentifier:@"TheOtherIdentifier" sender:self];
}
Run Code Online (Sandbox Code Playgroud)
但整个应用程序崩溃了一个SIGABRT,它没有提供任何有用的信息(是的,我确定是那条线让应用程序崩溃,我检查了调试器:)而且,VC我正在尝试加载已正确设置标识符,因为以下代码
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
UIViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"TheOtherIdentifier"];
[self.navigationController pushViewController:vc animated:YES];
}
Run Code Online (Sandbox Code Playgroud)
"作品".引号表明这显然不是应该进行这种转换的方式.
现在:想法?
我已经尝试了XCode 8 GM种子,我在故事板中发现了一个严重的问题,要么你使用自动布局要么禁用它,Xcode 8搞砸了UIScrollView中包含的UIView,如下所示:
有线的事情是,如果我将嵌入式UIView调整到ScrollView中,退出Xcode并再次打开我的项目,那么UIView会再次变得更大,没有任何意义.
你遇到过同样的问题吗?
你认为苹果公司正式发布XCode 8这个大错误吗?
谢谢!
更新 不幸的是,即使是正式版的Xcode 8也有同样的问题:(
xcode-storyboard ×10
ios ×9
swift ×3
xcode ×3
cocoa-touch ×1
ibdesignable ×1
ios5 ×1
ios8 ×1
iphone ×1
nsview ×1
objective-c ×1
storyboard ×1
uitableview ×1
xcode6 ×1
xcode8 ×1