相关疑难解决方法(0)

在UIButton中使用UIBarButtonItem图标

UIBarButtonItem有多个图标可用.是否可以使用将其标识符设置为"垃圾"后出现的图标:

垃圾图标

UIButton?设置标识符样式没有直接的方法.

cocoa-touch uibutton uibarbuttonitemstyle ios

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

Swift替代performSelectorOnMainThread

我想在此方法中的块中重新加载我的表数据:

import UIKit
import AssetsLibrary

class AlbumsTableViewController: UITableViewController {

    var albums:ALAssetsGroup[] = []

    func loadAlbums(){
        let library = IAAssetsLibraryDefaultInstance

        library.enumerateGroupsWithTypes(ALAssetsGroupType(ALAssetsGroupAll),
            usingBlock: {(group, stop) in
                if group {
                    self.albums.append(group)
                }
                else {
                    dispatch_async(dispatch_get_main_queue(), {

                        self.tableView.reloadData()

                    })
                }
            }, failureBlock: { (error:NSError!) in println("Problem loading albums: \(error)") })

    }

    override func viewDidLoad() {
        super.viewDidLoad()
        loadAlbums()

        // Uncomment the following line to preserve selection between presentations
        // self.clearsSelectionOnViewWillAppear = false

        // Uncomment the following line to display an Edit button in the navigation …
Run Code Online (Sandbox Code Playgroud)

performselector swift ios8

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

Swift不能用于函数指针吗?

我正在尝试在Swift中使用C库,而我在调用任何将函数指针作为其参数之一的函数时遇到了麻烦.例如,我试图在Swift中使用的lua.h文件的一部分如下所示:

LUA_API void  (lua_setuservalue) (lua_State *L, int idx);


typedef int (*lua_CFunction) (lua_State *L);

LUA_API void  (lua_callk) (lua_State *L, int nargs, int nresults, int ctx,
                       lua_CFunction k);
Run Code Online (Sandbox Code Playgroud)

我使用桥接头来访问库,从我的Swift代码中我可以毫无困难地调用lua_setuservalue.但是,如果我尝试调用lua_callk,我会"使用未解析的标识符'lua_callk'".如果我从lua_callk的声明中删除函数指针,我不再收到此错误.任何帮助都非常感谢.

c xcode lua ios swift

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

转换非托管<AnyObject>!在斯威夫特的Bool

我试图获得一个现有Objective C类的方法的结果,使用performSelector调用

let result = controlDelegate.performSelector("methodThatReturnsBOOL") as? Bool
Run Code Online (Sandbox Code Playgroud)

我需要将此结果转换为Bool类型的Swift.

上面提到的代码给出了警告

"从'未经管理!'演员阵容 不相关的类型'Bool'总是失败"

并且结果总是"假",即使该方法返回YES.

有关将结果转换为Bool的建议吗?

methodThatReturnsBOOL的签名

- (BOOL)methodThatReturnsBOOL
{
    return YES;
}
Run Code Online (Sandbox Code Playgroud)

ios swift

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

在Swift中调用目标操作

在Swift中,如何使用在运行时确定的选择器执行Cocoa目标操作模式?

手头的细节:我的代码收到一个UIBarButtonItem,它需要调用按钮代表的动作.在Objective-C中,它很简单:

UIBarButtonItem* button = ...;
[button.target performSelector: button.action withObject: self];
Run Code Online (Sandbox Code Playgroud)

在Swift中,performSelector:不会因类型/内存安全原因而暴露.我无法创建一个Swift闭包,因为我在编译时不知道button.action.还有其他任何调用动作的技巧吗?

swift

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

在Swift中动态调用方法

我已经创建了一个预定义颜色库,可以在Swift和Objective-C中使用,我已经为Xcode重写了一个插件,它在编辑器中预览颜色,以便它可以与我的库一起工作(以及其他一些变化).

该插件目前有一个创建的颜色列表.我对这个解决方案并不感到兴奋,因为这意味着无论何时我改变颜色列表,我都必须在这里修改我的代码.另外,我不喜欢有一个数据结构,周围有大约1500种颜色和字符串.似乎没那么高效或优雅.

我想要做的不是将所有颜色存储在内存中,而是在代码中遇到函数名时调用NSColor的正确函数.我发现我可以检查NSColor是否使用函数respondsToSelector响应选择器:但调用performSelector:不符合我的需要,因为我需要调用的返回值.

那么还有一种方法可以解决这个问题.

let colourDict [ String : NSColor ] = [
    "blackColor" : NSColor.blackColor(),
    "whiteColor" : NSColor.whiteColor() ]
...

let foundColour = colourDict[ colourMethodName ]
Run Code Online (Sandbox Code Playgroud)

对于这样的事情.

if ( NColor.respondsToSelector ( Selector ( colourMethodName ) ) {
    foundColour = NSColor.performSelector ( Selector ( colourMethodName ) )
}
Run Code Online (Sandbox Code Playgroud)

显然它不是performSelector:function本身,但我正在寻找那种类型的功能,除了它将返回NSColor对象.

谢谢.

swift

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

您如何使用 perform(#selector(setter:)) 使用 swift 4 设置属性的值?

我正在尝试运行此代码,但它产生了意想不到的结果。

class Test: NSObject {
    @objc var property: Int = 0
}

var t = Test()

t.perform(#selector(setter: Test.property), with: 100)
print(t.property)
Run Code Online (Sandbox Code Playgroud)

正在打印的值是一些垃圾数字-5764607523034233277。如何使用 perform 方法设置属性的值?

ios performselector swift

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

Swift:带有Selector参数的函数返回一个非托管的<AnyObject>?

有什么用 -

func perform(_ aSelector: Selector!) -> unmanaged<AnyObject>!

在iOS?

  • 要调用类的方法?
  • 要添加选择器方法?
  • 要添加一个类委托?
  • 定义一个类?(我怀疑是这个)

我原本以为它是添加一个选择器方法,但在看了它之后我想它可能是"调用一个类的方法".选择器用于目标/动作范例,其中我踢掉了一些东西,当事件触发或结束时,它想要触发某种动作方法.在这个例子中,我传递一个选择器函数的参数,然后在这个"执行"函数的末尾,我返回一个任何类型的非托管对象?这甚至有意义吗?

谢谢!

ios swift

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

在Swift中有没有NSInvocation的替代方案?

我正在尝试调用一个带有多个(2+)参数的选择器(可以确定参数的数量).但是,选择器在编译时是未知的(实际上是使用NSSelectorFromString生成的).

在Objective-C中,我可以创建一个调用并为其设置参数并调用它.但这在Swift中不可用.有没有办法解决?喜欢:

let obj = SomeClass()
let selector = NSSelectorFromString("arg1:arg2:arg3:") //selector, arguments known only at runtime
//invoke selector
Run Code Online (Sandbox Code Playgroud)

selector nsinvocation ios swift swift3

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