小编Isu*_*uru的帖子

从Swift中的nib定制UITableViewCell

我正在尝试从笔尖创建自定义表格视图单元格.我在这里指的是这篇文章.我面临两个问题.

我创建了一个.xib文件,其中拖动了一个UITableViewCell对象.我创建了一个子类,UITableViewCell并将其设置为单元格的类,将Cell设置为可重用的标识符.

import UIKit

class CustomOneCell: UITableViewCell {

    @IBOutlet weak var middleLabel: UILabel!
    @IBOutlet weak var leftLabel: UILabel!
    @IBOutlet weak var rightLabel: UILabel!

    required init(coder aDecoder: NSCoder!) {
        super.init(coder: aDecoder)
    }

    override init(style: UITableViewCellStyle, reuseIdentifier: String!) {
        super.init(style: style, reuseIdentifier: reuseIdentifier)
    }

    override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code
    }

    override func setSelected(selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)

        // Configure the view for the selected state
    }

}
Run Code Online (Sandbox Code Playgroud)

在UITableViewController中我有这个代码,

import UIKit …
Run Code Online (Sandbox Code Playgroud)

uitableview ios swift ios8

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

检查Swift中的互联网连接可用性

有没有办法检查使用Swift的互联网连接是否可用?

我知道有很多第三方库可以做到这一点,但它们都是用Objective-C编写的.我正在寻找一个Swift替代品.

ios network-connection swift

105
推荐指数
5
解决办法
8万
查看次数

动画绘制圆圈

我正在寻找一种动画绘制圆圈的方法.我已经能够创建圆圈,但它将所有这些组合在一起.

这是我的CircleView班级:

import UIKit

class CircleView: UIView {
  override init(frame: CGRect) {
    super.init(frame: frame)
    self.backgroundColor = UIColor.clearColor()
  }

  required init(coder aDecoder: NSCoder) {
    fatalError("init(coder:) has not been implemented")
  }


  override func drawRect(rect: CGRect) {
    // Get the Graphics Context
    var context = UIGraphicsGetCurrentContext();

    // Set the circle outerline-width
    CGContextSetLineWidth(context, 5.0);

    // Set the circle outerline-colour
    UIColor.redColor().set()

    // Create Circle
    CGContextAddArc(context, (frame.size.width)/2, frame.size.height/2, (frame.size.width - 10)/2, 0.0, CGFloat(M_PI * 2.0), 1)

    // Draw
    CGContextStrokePath(context);
  }
}
Run Code Online (Sandbox Code Playgroud)

以下是我如何将其添加到视图控制器中的视图层次结构中:

func addCircleView() …
Run Code Online (Sandbox Code Playgroud)

geometry progress drawrect uiviewanimation swift

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

如何在Swift中使用SCNetworkReachability

我正在尝试将此代码段转换为Swift.由于一些困难,我正在努力开始起飞.

- (BOOL) connectedToNetwork
{
    // Create zero addy
    struct sockaddr_in zeroAddress;
    bzero(&zeroAddress, sizeof(zeroAddress));
    zeroAddress.sin_len = sizeof(zeroAddress);
    zeroAddress.sin_family = AF_INET;

    // Recover reachability flags
    SCNetworkReachabilityRef defaultRouteReachability = SCNetworkReachabilityCreateWithAddress(NULL, (struct sockaddr *)&zeroAddress);
    SCNetworkReachabilityFlags flags;

    BOOL didRetrieveFlags = SCNetworkReachabilityGetFlags(defaultRouteReachability, &flags);
    CFRelease(defaultRouteReachability);

    if (!didRetrieveFlags)
    {
        return NO;
    }

    BOOL isReachable = flags & kSCNetworkFlagsReachable;
    BOOL needsConnection = flags & kSCNetworkFlagsConnectionRequired;

    return (isReachable && !needsConnection) ? YES : NO;
}
Run Code Online (Sandbox Code Playgroud)

我遇到的第一个和主要问题是如何定义和使用C结构.在struct sockaddr_in zeroAddress;上面代码的第一行()中,我认为他们正在定义一个zeroAddress从struct sockaddr_in(?)调用的实例,我假设.我试着宣布var这样的话.

var zeroAddress …
Run Code Online (Sandbox Code Playgroud)

c struct reachability ios swift

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

从对象数组中获取属性值数组

有一个叫做的课Employee.

class Employee {

    var id: Int
    var firstName: String
    var lastName: String
    var dateOfBirth: NSDate?

    init(id: Int, firstName: String, lastName: String) {
        self.id = id
        self.firstName = firstName
        self.lastName = lastName
    }
}
Run Code Online (Sandbox Code Playgroud)

我有一系列的Employee对象.我现在需要的是id将该数组中所有这些对象的s 提取到一个新数组中.

我也发现了类似的问题.但它在Objective-C中,所以它valueForKeyPath用来实现这一目标.

我怎么能在Swift中做到这一点?

arrays ios swift

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

将所有枚举值作为数组获取

我有以下枚举.

enum EstimateItemStatus: Printable {
    case Pending
    case OnHold
    case Done

    var description: String {
        switch self {
        case .Pending: return "Pending"
        case .OnHold: return "On Hold"
        case .Done: return "Done"
        }
    }

    init?(id : Int) {
        switch id {
        case 1:
            self = .Pending
        case 2:
            self = .OnHold
        case 3:
            self = .Done
        default:
            return nil
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我需要将所有原始值作为字符串数组(如此["Pending", "On Hold", "Done"]).

我将此方法添加到枚举中.

func toArray() -> [String] {
    var n = 1
    return Array(
        GeneratorOf<EstimateItemStatus> …
Run Code Online (Sandbox Code Playgroud)

arrays enums swift

71
推荐指数
7
解决办法
4万
查看次数

无法将"NSTaggedPointerString"类型的值转换为"NSNumber"

我有一个像这样的Swift结构.

struct Usage {
    var totalData: Double
    var remainingTotalData: Double

    init(jsonData: NSData) {
        var jsonDict = [String: AnyObject]()

        do {
            jsonDict = try NSJSONSerialization.JSONObjectWithData(jsonData, options: []) as! [String: AnyObject]
        } catch {
            print("Error occurred parsing data: \(error)")
        }

        totalData = jsonDict["totalfup"] as! Double
        remainingTotalData = jsonDict["totalrem"] as! Double
    }
}
Run Code Online (Sandbox Code Playgroud)

从API,我得到以下JSON响应.这是jsonDict变量的println .

[
    "totalfup": 96.340899, 
    "totalrem": 3548710948
]
Run Code Online (Sandbox Code Playgroud)

当我尝试将totalfup属性的值分配给属性时totalData,我收到此错误.

无法将"NSTaggedPointerString"类型的值转换为"NSNumber"

谁知道为什么?我尝试将属性类型更改为float然后将整个结构更改为类但仍然会出现问题.

double ios nsjsonserialization swift

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

自定义UITableViewCell中的多个UILabel

在我正在创建的iOS 8应用程序中,我有一个tableview,我需要它们自我调整大小.我使用自动布局实现它,它的工作原理.几乎.这是它现在的样子.

在此输入图像描述

单元格内有3个标签.主要标签有lorem ipsum文本.带有数字串的字幕(这是两个单独的标签.可能会因为颜色相同而混淆.)然后第三个标签带有小黑色文字.

第一个标签正确调整大小没有问题,第二个标签相应地上下移动.但问题在于第三个小标签.正如您所看到的,它没有调整自身大小以适应所有文本.

现在发生了一件奇怪的事情.我把它转向风景,这就是它.

在此输入图像描述

由于存在空间,标签正在显示其应有的整个文本.精细.然后我把它变回肖像.

在此输入图像描述

现在,小标签已经调整大小以适应其所有文本,但它溢出了单元格边界.我试着把细胞做大,但是没用.由于这是自我调整细胞,我不认为这是正确的方法.

我没有收到任何错误,甚至没有警告我的汽车布局限制.

在此输入图像描述

我在方法中设置了这两行代码viewDidLoad().

tableView.estimatedRowHeight = 100
tableView.rowHeight = UITableViewAutomaticDimension
Run Code Online (Sandbox Code Playgroud)

谁能告诉我这里可能做错了什么?

由于仅仅通过查看图像很难回答,而且我没有更多的代码可以在上面的代码段旁边发布,我上传了一个可运行的Xcode项目,在这里展示了这个问题.(有2个自定义单元格.基本上它是同一个单元格,只是高度在第二个单元格中增加.)

我一直在摆弄汽车布局限制,但我似乎无法让这个工作.任何帮助,将不胜感激.

谢谢.


更新:

在本教程的帮助下,我发现了一些有用的指针.根据它,每个子视图应该具有固定其所有边的约束,并且应该存在从上到下的约束,这有助于自动布局以计算单元的高度.在我的原始帖子中,我在每个标签之间有垂直空间,所以我认为这是自动布局无法计算正确高度的原因.

所以我做了一些改变.

  • 我将标签之间的垂直空间缩小为0,并在顶部和中间标签以及中间和底部标签之间设置垂直空间限制.
  • 我将top,top,trailing约束添加到顶部标签.
  • 领先并落后于中间标签.
  • 领先,底部,尾随标签.

现在这是另一个奇怪的部分.当我第一次运行它时,底部标签裁剪问题仍然存在.

在此输入图像描述

但是,如果我将设备旋转到横向并将其转回肖像,则所有单元格都会正确调整大小以适合两个标签!

在此输入图像描述

仍然无法弄清楚为什么一开始不会发生这种情况.更新的Xcode项目在这里.

uitableview ios autolayout swift ios8

60
推荐指数
3
解决办法
4万
查看次数

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

Swift中的静态属性

我正在尝试将以下Objective-C代码转换为Swift.在我的Objective-C代码中,有一个静态变量,它可以从类方法访问.

@implementation SomeClass

static NSMutableArray *_items;

+ (void)someMethod {
    [_items removeAll];
}

@end
Run Code Online (Sandbox Code Playgroud)

因为你无法private var items = [AnyObject]()从Swift中的类函数访问这样声明的类型,所以我为它创建了一个存储属性.

class var items: [AnyObject] {
    return [AnyObject]()
}
Run Code Online (Sandbox Code Playgroud)

而我正试图从类函数中调用一个方法.

class func someFunction() {
    items.removeAll(keepCapacity: false)
}
Run Code Online (Sandbox Code Playgroud)

但我得到这个错误类型'[AnyObject]'的不可变值只有名为'removeAll'的变异成员.

任何人都可以告诉我这个错误的原因是什么以及如何纠正它?

谢谢.

static-methods class static-members ios swift

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