小编Cod*_*ton的帖子

Swift performSelector:withObject:afterDelay:不可用

我在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)

objective-c ios swift xcode6

133
推荐指数
3
解决办法
11万
查看次数

在prepareForSegue中设置UITextField文本属性

我在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 objective-c uitextfield ios segue

11
推荐指数
1
解决办法
1万
查看次数

迁移到Swift 3时,Xcode停留在生成预览上

Xcode是想我的项目从迁移后卡住生成预览Swift 2.3Swift 3.

无论如何都要检查这个过程的状态而不取消?

我正在使用Cocoapods,我已经将所有Swift pod改为Swift 3版本.

生成预览

xcode swift3 xcode8

11
推荐指数
1
解决办法
1445
查看次数

setSelectedImageTintColor在iOS 7中不起作用

我正在尝试setSelectedImageTintColor在iOS 7中,但它无法正常工作.下面是我在我的代码AppDelegate.mdidFinishLaunchingWithOptions

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.选中时它是白色的; 未选中时为灰色.我究竟做错了什么?

objective-c uitabbarcontroller ios uiappearance ios7

10
推荐指数
1
解决办法
4587
查看次数

Alamofire请求错误:NSURLErrorDomain代码-1005网络连接丢失

我正在努力将我的项目从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 …

rest xcode ios swift alamofire

10
推荐指数
1
解决办法
8830
查看次数

Swift Extension不工作

我已经为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)

这是我通过自动完成得到的:

在此输入图像描述

我究竟做错了什么?

ios objective-c-category swift xcode6

7
推荐指数
2
解决办法
4866
查看次数

LAContext更改UIAlertController按钮标题

我已将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 touch-id swift uialertcontroller

7
推荐指数
1
解决办法
2727
查看次数

UIImageView与iOS 7没有显示

我有一个我正在为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错误报告 …

xcode objective-c uiimageview ios ios7

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

preferredStatusBarUpdateAnimation被忽略

我有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)

uiviewcontroller uiviewanimation uistatusbar swift

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

Objective-C Clang-Format方法Brace Break

我正在为我的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方法的开头括号之前放置换行符?

xcode lint objective-c clang-format

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