相关疑难解决方法(0)

我可以使用Objective-C将块作为@selector传递吗?

是否可以为@selector一个UIButton?中的参数传递一个Objective-C块?即,有没有办法让以下工作?

    [closeOverlayButton addTarget:self 
                           action:^ {[anotherIvarLocalToThisMethod removeFromSuperview];} 
                 forControlEvents:UIControlEventTouchUpInside];
Run Code Online (Sandbox Code Playgroud)

谢谢

cocoa-touch objective-c

90
推荐指数
5
解决办法
4万
查看次数

Objective C类别的实例变量

我有一种情况,似乎我需要将实例变量添加到一个类别,但我从Apple的文档中知道我不能这样做.所以我想知道最好的选择或解决方法是什么.

我想要做的是添加一个为UIViewControllers添加功能的类别.我会发现它在我所有不同的UIViewControllers中都很有用,无论它们扩展了什么特定的UIViewController子类,所以我认为一个类别是最好的解决方案.为了实现这个功能,我需要几种不同的方法,我需要跟踪它们之间的数据,这就是我想要创建实例方法的原因.

如果它有用,这就是我特别想做的事情.我希望能够更容易地跟踪软件键盘何时隐藏和显示,以便我可以在视图中调整内容的大小.我发现可靠的唯一方法是将代码放在四个不同的UIViewController方法中,并跟踪实例变量中的额外数据.所以那些方法和实例变量是我想要放入一个类别的,所以每次我需要处理软件键盘时都不需要复制它们.(如果对于这个确切的问题有一个更简单的解决方案,那也没关系 - 但我仍然想知道类别实例变量的答案以供将来参考!)

oop cocoa objective-c categories

32
推荐指数
5
解决办法
3万
查看次数

如何确定dequeueReusableCellWithIdentifier返回的单元格是否在iOS 6中重用?

我正在向cellForRowIndexPath中的单元格添加项目(例如手势识别器,子视图).如果重复使用单元格(大概是),我不想添加这些,所以有没有办法轻松判断单元格是新的还是被重用?

单元原型在故事板中定义.

我没有为单元格使用自定义子类(看起来像是矫枉过正).我正在使用单元格标记来识别子视图,因此无法使用它.

我可以使用iOS 6之前的方法,但肯定有更好的方法来做这么简单的事情吗?

我在网上找不到任何东西,所以害怕我可能会对某些东西感到困惑 - 但搜索起来很困难.

uitableview ios

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

Swift中的关联对象,全局键实际上是否会产生特定的实例?

要在Swift中拥有一个关联对象,只需使用内存地址作为句柄,然后使用objc调用.

您可以在任何地方谷歌的常见示例代码是:

var keyA:UInt8 = 0
var keyB:UInt8 = 0
extension UIViewController {

    var aoAA: String? {
        get { return objc_getAssociatedObject(self, &keyA) as? String }
        set { objc_setAssociatedObject(self, &keyA, newValue, objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN) }
    }
    var aoBB: String? {
        get { return objc_getAssociatedObject(self, &keyB) as? String }
        set { objc_setAssociatedObject(self, &keyB, newValue, objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN) }
    }
}
Run Code Online (Sandbox Code Playgroud)

这工作正常,

class Thing: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        aoAA = "this is a"
        print("...... \(aoAA)")
        aoBB = "this is b"
        print("...... \(aoBB)")
        aoAA = …
Run Code Online (Sandbox Code Playgroud)

objective-c objective-c-runtime ios swift

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