小编Kev*_*vin的帖子

如何为类别创建swift类?

我想创建现有swift类的类别,但IDE中没有选项可以这样做.

知道swift项目中是否存在类别?或者如何在swift项目中实现类似的功能?

swift swift-extensions

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

在iOS编程中使用Storyboard而不是xib文件有什么好处?

使用Storyboard和xib文件有什么主要区别.

具体来说,使用故事板有什么优缺点

遗憾的是,尽管进行了大量的研究,我在故事板上找到的所有内容都是简单的教程,向您展示如何设置故事板,而不是具体的信息来解释它们是什么.

xcode interface-builder storyboard xib ios

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

.podspec错误 - source_files`模式与任何文件都不匹配

我正在整合我的一个github repos(这里有完整的代码,如果它有帮助)和Cocopods,我跑的时候会收到这个错误pod spec lint.

 -> DropDownMenu (0.0.1)
  - ERROR | [iOS] The `source_files` pattern did not match any file.
Run Code Online (Sandbox Code Playgroud)

这是.podspec我认为导致问题的相关代码.

看一下这里的例子,这里这里,我尝试了以下内容

s.source_files  = 'Classes/*.{h,m}'
s.source_files  = 'Classes/DropDownMenu.{h,m}'
s.source_files  = 'Classes'
s.source_files  = 'Classes/**/*.{h,m}'
Run Code Online (Sandbox Code Playgroud)

我的s.source_files领域不正确吗?或者我做错了.podspec什么?我该怎么做才能解决这个问题?

我的问题类似于这个问题,但解决方案对我不起作用(我的代码在Github上更新).

ios cocoapods

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

在XCTest UI测试中复制pull以刷新

我试图UITableView在Xcode 7(beta 3)中使用新的Xcode UI测试框架复制一个pull来刷新

我目前的方法是从表格拖到我能找到的表格下面的任何元素.这可以在表格下面有一个固定项目时使用,UIToolbar或者UITabBar我宁愿不依赖于具有UITabBarUIToolbar但我无法找到一种方法来执行拉动以刷新/拖动动作而不使用该方法XCUIElement.

func pressForDuration(duration: NSTimeInterval, thenDragToElement otherElement: XCUIElement)
Run Code Online (Sandbox Code Playgroud)

刷新成功

但是当我没有工具栏/标签栏并尝试使用单元格拖动时,它会失败

刷新失败

这是我的代码的相关部分:

func testRefresh() {
    //For testing cell
    for _ in 0...9 {
        addCell()
    }
    refreshTable()
}

func refreshTable(var tbl: XCUIElement? = nil) {
    let app = XCUIApplication()

    if tbl == nil {
        let tables = app.tables
        if tables.count > 0 {
            tbl = tables.elementAtIndex(0)
        }
    }

    guard let table = tbl else {
        XCTFail("Cannot find a …
Run Code Online (Sandbox Code Playgroud)

ios xctest swift xcode7 xcode-ui-testing

25
推荐指数
2
解决办法
5376
查看次数

Swift 2添加协议与协议的一致性

我可以通过快速扩展将协议一致性添加到协议中吗?

//Plain old protocol here
protocol MyData {
    var myDataID: Int { get }
}
Run Code Online (Sandbox Code Playgroud)

我想MyData默认使协议等同(只需比较ID)

extension MyData : Equatable { }
Run Code Online (Sandbox Code Playgroud)

但我得到了这个可爱的错误:

"协议扩展'MyData'不能有继承条款"

我正在寻找的行为是符合Equatable(协议)的BananaData,因为它实现了MyData协议,它可以提供Equatable的默认实现

//This is the method to implement Equatable
func ==(lhs: MyData, rhs: MyData) -> Bool {
    return lhs.myDataID == rhs.myDataID
}

struct BananaData: MyData {
    var myDataID: Int = 1
}

func checkEquatable(bananaOne: BananaData, bananaTwo: BananaData) {
    //This compiles, verifying that BananaData can be compared
    if bananaOne == bananaTwo { }
    //But BananaData is …
Run Code Online (Sandbox Code Playgroud)

protocols swift swift2

20
推荐指数
1
解决办法
8414
查看次数

在swift中为所有出现的字符串着色

这段代码

var textSearch="hi"
var textToShow="hi hihi hi" 
var rangeToColor = (textToShow as NSString).rangeOfString(textSearch)
var attributedString = NSMutableAttributedString(string:textToShow)
attributedString.addAttribute(NSForegroundColorAttributeName, value: UIColor.yellowColor() , range: rangeToColor)
TextView.attributedText=attributedString
Run Code Online (Sandbox Code Playgroud)

给我NSRange为TextView中的字符串着色.问题是我只返回第一次出现.如果单词包含"hi hihi hi",则仅第一个"hi"被着色.如何获取所有出现的字符串?

nsstring ios nsmutableattributedstring swift

13
推荐指数
2
解决办法
3730
查看次数

iOS 8键盘在解除模态视图控制器后解除延迟

在iOS 8+中,我注意到如果你有一个目前firstResponder在视图控制器中显示的文本字段,当视图控制器被解除时,键盘会在被解雇之前挂起约1秒钟.

iOS 8.0和8.1而不是 7.1 都会出现这种情况.

任何想法为什么会这样?

modalviewcontroller ios8

12
推荐指数
1
解决办法
2962
查看次数

创建关系细分

我怎样才能创建一个关系segue?我想创建一个UIViewController类似于UITabBarControllerUINavigationController在哪里的子类,使用Interface Builder,我可以控制+从视图控制器拖动到另一个视图控制器.我试过了

@property (nonatomic) IBOutlet NSArray *viewControllers;
@property (nonatomic) IBOutlet UIStoryboardSegue *root;
Run Code Online (Sandbox Code Playgroud)

并尝试将Container View拖入我的视图控制器.当我这样做时,我可以从一个视图控制器拖动到另一个视图控制器,但我不能拖动到多个视图控制器.我也找不到UIContainerView对象的任何文档.

uiviewcontroller ios segue

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

试图发送电子邮件,"使用未声明的未识别的MFMailComposeViewController"

我正在尝试在我的应用中发送电子邮件.我正在尝试使用MFMailComposeViewController对象,但收到一条错误消息,称其为"未声明的标识符"

码:

-(IBAction) aContact: (id) sender;
{


    if([MFMailComposeViewController canSendMail]){

        MFMailComposeViewController *mailCtrl = [[[MFMailComposeViewController alloc] init] autorelease];
        [mailCtrl setSubject:@"Your TellaFortune Card Reading"];
        //  [mailCtrl setToRecipients:[NSArray arrayWithObject:@"drblyer@cameosurgery.com"]];
        mailCtrl.mailComposeDelegate = self;

        NSString *send;
        send=[ NSString stringWithFormat: @"%@ %@",content,@"\n \n By www.TellaFortune.com"];
        [mailCtrl setMessageBody: send  isHTML: false];

        [self presentModalViewController:mailCtrl animated:NO];
        //      [mailCtrl release];

    }
    else
    {
        UIAlertView *alert=[[ UIAlertView alloc]
                            initWithTitle:@"Cannot send email"
                            message: @"Please check internet connection and email set up"
                            delegate: self
                            cancelButtonTitle:@"Ok"
                            otherButtonTitles: nil];

        [alert show];
    }

}
Run Code Online (Sandbox Code Playgroud)

iphone

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

将类从操场页面导入另一个页面

注意:这与导入通用 swift 文件(可以使用 Sources 文件夹完成)是不同的问题

我有一个有 2 页的操场,我想使用在第二页的第一页中定义的协议。我将使用 JSON 转换的示例。

JSON.xcplaygroundpage

import Foundation

protocol JSONConvertible {
    func jsonValue() -> String
}
Run Code Online (Sandbox Code Playgroud)

JSONArray.xcplaygroundpage

import Foundation

//Undeclared type JSONConvertible
extension Array : JSONConvertible {

}
Run Code Online (Sandbox Code Playgroud)

我尝试了以下导入:

import MyPlayground
import MyPlayground.JSON
import JSON
import JSON.Contents (in finder the file name is actually Contents.swift)
Run Code Online (Sandbox Code Playgroud)

我还尝试将 JSON.xcplaygroundpage 添加到 Source 文件夹和JSONArrayResources 文件夹中。

注意:我意识到我可以将协议定义放在一个单独的地方,JSON.swift并将其包含在我的项目 Sources 文件夹中。这并不能真正回答我的问题。

xcode swift swift-playground

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