这个页面显示了我可以轻松地在Xcode 4中连接插座http://developer.apple.com/technologies/tools/whats-new.html,但我无法得到它.
我右键单击并从新的引用出口圆圈拖出一个插座,然后进入我声明对象的标题,但没有任何反应.
有没有人用过这个?
非常感谢
我以为我从这个问题中清楚地理解了这一点 - > 在ARC下IBOutlets是强还是弱?但我最近进行了一次讨论,让我完全糊涂了.有人可以确认以下是否正确?(如果这是一个副本,我并不打算违反任何规则..只需要澄清,因为我可以理解图表比文字更好..)

ARC下(MacOSx)
如果这是正确的,那么有人可以确认..
在上图中,我们在屏幕上有一个windowControllerA .在windowControllerA的视图中,有2个NSView.view1属于windowController,但是mainView属于insregciated viewController,ViewControllerB的视图.
ViewControllerB在其mainView中还包含2个视图.View2由viewControllerB拥有,而view3属于另一个实例viewController,ViewControllerC.
ViewController C拥有一个它拥有的视图.
我想知道如何从另一个类访问类中声明的@IBOutlet
例如,我有一个名为myfirstview的类
class MyFirstView: UIViewController {
@IBOutlet var lblred: UILabel! = UILabel()
}
Run Code Online (Sandbox Code Playgroud)
我想改变的文本lblred从另一个名为类MySecondView这是写在另一个.swift文件中:
class MySecondView: UIViewController {
func modify() {
let mfv = MyFirstView()
mfv.lblred.text = "Hello"
}
}
Run Code Online (Sandbox Code Playgroud)
但没有任何反应.
我已经连接lblred了故事板标签.我在网上搜索了很多关于这个但我找不到可以解决我问题的那个.请帮我解决这个问题.
谢谢.
我认为这张图片解释了一切.我有一个UIView的子类,我已经进入了类字段.我正在尝试在故事板和类实现之间连接ibOutlets.这不是给我一个错误,但它也不起作用.这是另一个xcode错误,还是我希望它以不会的方式工作?

抱歉,如果我对这个问题过于挑剔,但我现在正在学习iOS编程,而且我似乎有些人声明IBOutlet这样:
#import <UIKit/UIKit.h>
#import "CustomCell.h"
@interface CustomTableViewController : UITableViewController {
CustomCell *customCell;
}
@property (nonatomic, retain) IBOutlet CustomCell *customCell;
@end
Run Code Online (Sandbox Code Playgroud)
有些人这样声明:
#import <UIKit/UIKit.h>
#import "CustomCell.h"
@interface CustomTableViewController : UITableViewController {
IBOutlet CustomCell *customCell;
}
@property (nonatomic, retain) CustomCell *customCell;
@end
Run Code Online (Sandbox Code Playgroud)
哪一个是宣告它的正确方法?它们之间有什么区别吗?如果有人知道解释为什么他们把它放在不同的地方,那将是很棒的学习.
非常感谢 :)
我正在尝试使用可在Interface Builder中找到的UITapGestureRecognizer对象.我将一个"UITapGestureRecognizer"从对象库拖到单个视图xib.然后我从这个轻敲手势创建一个IBAction方法,进行一个简单的测试,一旦点击视图,我只是打印一个"NSLog"消息到控制台.我已经运行了这个,并且没有调用tap方法.我右键单击IB中的视图,我注意到有一个警告"!" 在视图的"Outlook集合"中我看到:
Outlet Collections
gestureRecognizers - Tap Gesture Recognizer (!)
Run Code Online (Sandbox Code Playgroud)
警告说明: UIView does not have an outlet collection named gestureRecognizers.
我需要做些什么来解决这个问题?
objective-c interface-builder iboutlet uigesturerecognizer ios
嗨,我是iOS编程的新手.我知道强弱的参考是什么.但是当我不得不处理插座时,我会混淆使用哪种类型的参考.经过文件说明
Outlets通常应该是弱的,除了那些从File的Owner到nib文件中的顶级对象(或者在iOS中,故事板场景中)应该很强大.
所以我在完成上述陈述后理解的是,我们创建的奥特莱斯默认情况下通常应该很弱.
但是在学习一些教程的过程中,我遇到了一些代码,人们已经宣称这个代码是强有力的参考.例如,请考虑以下代码:
@interface AboutViewController : UIViewController
@property (nonatomic, strong) IBOutlet UIWebView *webView;
@end
Run Code Online (Sandbox Code Playgroud)
代码 :
@property (nonatomic, strong) IBOutlet UIWebView *webView;
Run Code Online (Sandbox Code Playgroud)
说我们的AboutViewController有一个UIWebView对象.
但是为什么我们需要一个强大的UIView对象参考?正如文件所述,这不应该是一个弱的参考?
另外,请在上面引用的文档声明中解释文件所有者对顶级对象的含义是什么?
我在这个网站上经历了很多类似的问题,但没有一个能帮我清除疑虑.所以请帮忙.提前致谢 :)
我创建了一个类"DeletableImageView"(.swift + .xib),它通过我称为委托的属性使用我定义为"DeletableImageViewDelegate"的协议.
为清晰起见的示例:
DeletableImageView.swift
protocol DeletableImageViewDelegate {
func deleteImageWithTag(tag: Int!) -> (Bool)
func addImageOnViewWithTag(tag: Int!) -> (Bool)
...
}
class DeletableImageView: UIView {
var view: UIView!
var delegate: DeletableImageViewDelegate?
// Some random methods + some use of the delegate protocol's methods
...
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,现在,当我尝试在关联的.xib文件的控制器中使用我的类时(这意味着我在界面构建器中拖放视图并将DeletableImageView类分配给此视图)我无法链接委托属性(即使我将此属性声明为IBOutlet).
我希望能够做的是直接将视图的委托出口链接到.xib中的"文件所有者"
当您直接在.xib文件中从tableview链接数据源和委托时,您完全相同.
但是,当我控制 - 拖动时,它们不会连接在一起.
有没有人知道发生了什么?
非常感谢你.
在运行iOS 8时,IBOutlet我的基于nib的视图控制器的s是nil,但是在运行iOS 9时,它们工作正常.任何想法为什么会这样?
我的应用程序支持iOS 8+,我正在运行Xcode 7.2.
我遇到了一个问题,我无法理解为我的生活.我搜索了互联网,试图了解Swifts的EXC_BAD_ACCESS,但似乎没有任何帮助.
以下代码很长,但大多数时候注释都是理解相关项所需的所有信息.
我有一个类CalculatorController,其中包含以下相关方法和属性:
import UIKit
class CalculatorController: UIViewController {
// the actual `@IBOutlet` which is never accessed directly
@IBOutlet private weak var _mainDisplay: UILabel!
// an instance of `MainDisplayMicroController`
// holds a reference to `_mainDisplay`
// is used to manipulate `_mainDisplay` in a controlled way
private var mainDisplay: MainDisplayMicroController!
override func viewDidLoad() {
super.viewDidLoad()
// connects `mainDisplay` with `_mainDisplay`
mainDisplay = MainDisplayMicroController(label: _mainDisplay)
// sets `_mainDisplay`'s `text` property to "0"
mainDisplay.content = .Number(0)
//...
}
//... …Run Code Online (Sandbox Code Playgroud) iboutlet ×10
ios ×6
objective-c ×4
swift ×4
iphone ×2
xcode ×2
cocoa ×1
connection ×1
delegates ×1
nib ×1
storyboard ×1
uilabel ×1
uiview ×1
xcode4 ×1
xib ×1