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

用UIButton?设置标识符或样式没有直接的方法.
我想在此方法中的块中重新加载我的表数据:
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) 我正在尝试在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的声明中删除函数指针,我不再收到此错误.任何帮助都非常感谢.
我试图获得一个现有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) 在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和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对象.
谢谢.
我正在尝试运行此代码,但它产生了意想不到的结果。
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 方法设置属性的值?
有什么用 -
func perform(_ aSelector: Selector!) -> unmanaged<AnyObject>!
在iOS?
我原本以为它是添加一个选择器方法,但在看了它之后我想它可能是"调用一个类的方法".选择器用于目标/动作范例,其中我踢掉了一些东西,当事件触发或结束时,它想要触发某种动作方法.在这个例子中,我传递一个选择器函数的参数,然后在这个"执行"函数的末尾,我返回一个任何类型的非托管对象?这甚至有意义吗?
谢谢!
我正在尝试调用一个带有多个(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)