我在Objective C中有一个应用程序,我正在转换到Swift.在Objective C中,我有这个方法:
[self.view performSelector:@selector(someSelector) withObject:self afterDelay:0.1f];
我正在使用Swift,我无法弄清楚如何做到这一点.我试过了:
self.view.performSelector(Selector("someSelector"), withObject: self, afterDelay: 0.1)
这是我得到的错误: 'performSelector' is unavailable: 'performSelector' methods are unavailable
我会用什么电话来调用方法afterDelay?
UPDATE
这是我最终得到的:
extension NSObject {
func callSelectorAsync(selector: Selector, object: AnyObject?, delay: NSTimeInterval) -> NSTimer {
let timer = NSTimer.scheduledTimerWithTimeInterval(delay, target: self, selector: selector, userInfo: object, repeats: false)
return timer
}
func callSelector(selector: Selector, object: AnyObject?, delay: NSTimeInterval) {
let delay = delay * Double(NSEC_PER_SEC)
let time = dispatch_time(DISPATCH_TIME_NOW, Int64(delay))
dispatch_after(time, dispatch_get_main_queue(), {
NSThread.detachNewThreadSelector(selector, toTarget:self, withObject: object) …Run Code Online (Sandbox Code Playgroud) 我在ViewController1中有一个textField.我有一个push segue到我的ViewController2,它也有一个textField.我需要将ViewController2中的textField.text设置为等于ViewController1中textField中的文本.这是我的代码:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqual:@"ViewController2"])
{
ViewController2 *VCT = [segue destinationViewController];
VCT.title = @"View Controller #2";
VCT.textField.text = self.textField.text;
}
}
Run Code Online (Sandbox Code Playgroud)
标题制定者工作得很好.为什么textField不起作用?
Xcode是想我的项目从迁移后卡住生成预览Swift 2.3到Swift 3.
无论如何都要检查这个过程的状态而不取消?
我正在使用Cocoapods,我已经将所有Swift pod改为Swift 3版本.
我正在尝试setSelectedImageTintColor在iOS 7中,但它无法正常工作.下面是我在我的代码AppDelegate.m下didFinishLaunchingWithOptions
UITabBarController *tabBarController = (UITabBarController *) self.window.rootViewController;
UITabBar *tabBar = tabBarController.tabBar;
for (UITabBarItem *item in tabBar.items)
{
UIImage *image = item.image;
UIImage *correctImage = [image imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
item.image = correctImage;
}
[[UITabBar appearance] setTintColor:[UIColor whiteColor]];
[[UITabBar appearance] setSelectedImageTintColor:[UIColor colorWithRed:44.0/255.0 green:176.0/255.0 blue:28.0/255.0 alpha:1.0]];
[[UITabBar appearance] setBarTintColor:[UIColor colorWithRed:51.0/255.0 green:51.0/255.0 blue:51.0/255.0 alpha:1.0]];
Run Code Online (Sandbox Code Playgroud)
它仍然不会显示selectedImageTintColor.选中时它是白色的; 未选中时为灰色.我究竟做错了什么?
我正在努力将我的项目从AFNetworking转移到Alamofire.真的很喜欢这个项目.但是,我在尝试发出GET请求时收到此错误.
这是一些示例代码:
class func listCloudCredntials(onlyNew onlyNew: Bool = true, includePending: Bool = true) -> Request {
let parameters: [String: AnyObject] = includePending ? ["include_pending": "true"] : [:]
let urlString = "https://myapp-staging.herokuapp.com/api/1/credntials"
let token = SSKeychain.storedToken()
let headers: [String: String] = ["Authorization": "Bearer \(token)"]
return Alamofire.request(.GET, urlString, parameters: parameters, encoding: .JSON, headers: headers)
}
Run Code Online (Sandbox Code Playgroud)
然后,在我的VC中:
listCloudCredntials().validate().responseJSON() {
(response: Response<AnyObject, NSError>) in
switch response.result {
case .Success(let result):
printCR("success: \(result)")
case .Failure(let error):
printCR("error: \(error)")
}
}
Run Code Online (Sandbox Code Playgroud)
这是我遇到的错误:
错误域= NSURLErrorDomain代码= -1005"网络连接丢失." UserInfo …
我已经为UIColor添加了一些扩展,用于我在整个应用中使用的一些颜色.这是一个例子:
extension UIColor {
func appLightGrayColor() -> UIColor {
return UIColor(red: 190.0/255.0, green: 190.0/255.0, blue: 190.0/255.0, alpha: 1.0)
}
func grayScaleColor(grayScale : CGFloat) -> UIColor {
return UIColor(red: grayScale/255.0, green: grayScale/255.0, blue: grayScale/255.0, alpha: 1.0)
}
}
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试调用它时,我能够无错误地编译的唯一方法是:
UINavigationBar.appearance().barTintColor = UIColor.appLightGrayColor(UIColor())()
Run Code Online (Sandbox Code Playgroud)
这是我通过自动完成得到的:

我究竟做错了什么?
我已将TouchID合并到我的应用中LAContext,如下所示:

但是,我想要从"输入密码"更改按钮标题的名称,以输入"输入安全代码"(或类似的东西),如下所示:

如何更改按钮标题?
这是LAContext 文档,这是我的代码:
var touchIDContext = LAContext()
if touchIDContext.canEvaluatePolicy(LAPolicy.DeviceOwnerAuthenticationWithBiometrics, error: &msgError) {
touchIDContext.evaluatePolicy(.DeviceOwnerAuthenticationWithBiometrics, localizedReason: touchIDMessage) {
(success: Bool, error: NSError!) -> Void in
if success {
println("Success")
} else {
println("Error: \(error)")
}
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个我正在为iOS 6构建的应用程序,我最近升级到iOS 7.我有UIScrollView一些自定义UIViews.在那些中UIViews,我UIImageView每个都有一个.出于某种原因,当我UIImageView.image在iOS 6中设置时,它显示正常,但iOS 7不会显示它们.这是代码:
int i = 0;
for (UIImageView *imageView in myImageViewsOutletCollection)
{
imageView.image = nil;
if (imagesArray.count > i)
imageView.image = [UIImage imageWithData:[imagesArray objectAtIndex:i]];
if (imageView.image == nil)
NSLog(@"signature image with index: %i is nil", i);
else
NSLog(@"It Worked")
i++;
}
Run Code Online (Sandbox Code Playgroud)
我的应用程序正在记录:@"It Worked",所以我知道UIImageView.image不是nil.我能做错什么?
编辑:
我尝试了UIImageRenderingMode:
UIImage *imageForView = [UIImage imageWithData:[imagesArray objectAtIndex:i]];
imageForView = [imageForView imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
imageView.image = imageForView;
Run Code Online (Sandbox Code Playgroud)
仍然没有奏效.但是,@ Max_Power89说:
因为它写在苹果开发者论坛上:imageWithData错误报告 …
我有AuthViewController这样的表现MainViewController:
let mainVC = MainViewContoller()
mainVC.modalTransitionStyle = .CrossDissolve
authVC.presentViewController(mainVC, animated: true, completion: nil)
Run Code Online (Sandbox Code Playgroud)
我希望AuthViewController隐藏状态栏,但是MainViewController要显示,如下所示:
AuthViewController {
override func preferredStatusBarStyle() -> UIStatusBarStyle {
return .LightContent
}
override func preferredStatusBarUpdateAnimation() -> UIStatusBarAnimation {
return .Fade
}
override func prefersStatusBarHidden() -> Bool {
return false
}
}
MainViewController {
override func preferredStatusBarStyle() -> UIStatusBarStyle {
return .LightContent
}
override func preferredStatusBarUpdateAnimation() -> UIStatusBarAnimation {
return .Fade
}
override func prefersStatusBarHidden() -> Bool {
return false …Run Code Online (Sandbox Code Playgroud) 我正在为我的Objective-C项目使用clang-format,但是我在设置它时遇到了困难.
这是我想要的结果:
- (NSString *)someMethod
{
return @"My String";
}
Run Code Online (Sandbox Code Playgroud)
这是格式化后的实际结果:
- (NSString *)someMethod {
return @"My String";
}
Run Code Online (Sandbox Code Playgroud)
这是我的.clang-format档案:
BasedOnStyle: WebKit
AlignTrailingComments: true
ColumnLimit: 120
IndentWidth: 2
KeepEmptyLinesAtTheStartOfBlocks: false
ObjCSpaceAfterProperty: true
ObjCSpaceBeforeProtocolList: true
PointerBindsToType: false
SpacesBeforeTrailingComments: 1
TabWidth: 2
UseTab: Never
BreakBeforeBraces: Custom
BraceWrapping:
AfterClass: true
AfterControlStatement: false
AfterEnum: true
AfterExternBlock: true
AfterFunction: true
AfterNamespace: true
AfterObjCDeclaration: true
AfterStruct: true
AfterUnion: true
BeforeCatch: false
BeforeElse: false
IndentBraces: false
SplitEmptyFunction: true
SplitEmptyRecord: true
SplitEmptyNamespace: true
Run Code Online (Sandbox Code Playgroud)
我需要更改什么设置才能让格式化程序在Objective-C方法的开头括号之前放置换行符?
ios ×7
objective-c ×5
swift ×5
xcode ×5
ios7 ×2
xcode6 ×2
alamofire ×1
clang-format ×1
lint ×1
rest ×1
segue ×1
swift3 ×1
touch-id ×1
uiappearance ×1
uiimageview ×1
uistatusbar ×1
uitextfield ×1
xcode8 ×1