小编Ben*_*ard的帖子

将editButtonItem连接到UITableView

我有一个UIViewController添加a UITableView和a UIToolbar的视图.不幸的是我UITableViewController在这个例子中不能使用a .

我已将视图控制器添加editButtonItem到工具栏中.我需要复制一个编辑按钮的默认行为UITableViewController-编辑按钮应该被捆绑到的tableView并切换输入/输出的编辑模式.

我已经覆盖了UIViewControllersetEditing,包括行:

[_tableView setEditing:editing animated:animated];
Run Code Online (Sandbox Code Playgroud)

这大部分都有效 - 表格视图在editButtonItem使用时成功进入和退出编辑模式.

但是,至少有一个问题.在a上UITableViewController,当用户在表格中的一行上滑动时,编辑按钮会切换为"完成".'完成'然后将该行返回到它的非编辑版本.此外,触摸行外部会将其返回到查看模式,并将编辑按钮还原为"完成".

我的问题:

  1. 如何复制此行为,以便当单个行进入/退出编辑模式时,"编辑"按钮会更改状态?
  2. 什么的其他行为UITableViewControllereditButtonItem,我可能需要复制?

cocoa-touch uitableview uiviewcontroller ios

4
推荐指数
1
解决办法
1341
查看次数

查找依赖于区域设置的第一天

给定一个NSDate,如何根据用户的区域设置找到该日期的第一天.例如,我听说有些国家将星期一视为一周的第一天,其他国家则使用星期日.我需要在第一种情况下返回前一个星期一,而在后一种情况下返回前一个星期日.

无论应用何种设备设置,我到目前为止的最佳努力始终返回前一个星期日:

NSCalendar *calendar = [NSCalendar currentCalendar];
[calendar setLocale:[NSLocale currentLocale]];
NSDateComponents *components = [calendar components:NSYearForWeekOfYearCalendarUnit | NSYearCalendarUnit | NSMonthCalendarUnit | NSWeekCalendarUnit | NSWeekdayCalendarUnit fromDate:originalDate];
[components setWeekday:1];
NSDate *firstDayOfWeek = [calendar dateFromComponents:components];
Run Code Online (Sandbox Code Playgroud)

奖金问题:在iOS上,哪个设置驱动这个?它是'地区格式'吗?

cocoa-touch objective-c nsdate nsdatecomponents ios

4
推荐指数
1
解决办法
1323
查看次数

具有非可选属性的便捷初始化程序

我的一个对象有一个整数ID.由于这是一个必需的属性,我没有将它定义为可选,我要求它在指定的初始化程序中:

class Thing {

    var uniqueID: Int
    var name: String?

    init (uniqueID: Int) {
        self.uniqueID = uniqueID
    }       

}
Run Code Online (Sandbox Code Playgroud)

由于我是从一些JSON创建其中一个,因此用法如下:

if let uniqueID = dictionary["id"] as? Int {
    let thing = Thing(uniqueID: unique)
}
Run Code Online (Sandbox Code Playgroud)

(顺便说一句,我希望对我到目前为止所做的事情进行健全检查).

接下来,我希望能够为Thing类添加一个便利初始化器,它接受字典对象并相应地设置属性.这包括必需uniqueID和一些其他可选属性.到目前为止,我的最大努力是:

convenience init (dictionary: [String: AnyObject]) {
    if let uniqueID = dictionary["id"] as? Int {
        self.init(uniqueID: uniqueID)
        //set other values here?
    }
        //or here?
}
Run Code Online (Sandbox Code Playgroud)

但是当然这还不够,因为没有在条件的所有路径上调用指定的初始值设定项.

我该如何处理这种情况?它甚至可能吗?或者我应该接受uniqueID必须是可选的?

initialization optional swift

4
推荐指数
2
解决办法
1501
查看次数

Dropbox和Xcode

我想在两台不同的机器上开始开发我的cocoa应用程序.我不确定实现这一目标的最简单方法,但考虑使用我的Dropbox文件夹.请问xcode可以吗?这是一种常见的方法吗?它运作良好吗?是否有一些我应该注意的常见问题?

xcode cocoa dropbox

3
推荐指数
1
解决办法
3923
查看次数

将NSStrings的NSArray与NSStrings的另一个NSArray进行比较

我有两个NSArrays包含NSStrings.我需要测试两个数组是否相等.在这种情况下,相等意味着数组不包含相同的对象,但每个对象isEqualToString在与其对应物进行比较时返回true .如果一个项目包含的项目多于另一个项目,或者项目的顺序不同,则数组也不相等.

我可以假设isEqualToArray在这里不会帮助我吗?

同样,我没有看到使用NSSet它的方法将满足所有标准.

我如何测试这两个数组的相等性?

cocoa objective-c nsstring nsarray

3
推荐指数
1
解决办法
1485
查看次数

在编辑模式下更新单元的附件

我有一个相当普通的分组UITableView,允许用户选择一个部门.当他们选择一行时,我更新附件视图以在新行上显示复选标记并从上一行中删除它.

我还允许编辑表格视图.在编辑模式下,隐藏复选标记,这很好.但是,如果用户删除当前所选(已选中)部门的行,我需要以编程方式移动复选标记.

我尝试使用与使用新部门时添加和删除复选标记相同的方法:

- (void)deleteDepartmentAtIndex:(NSInteger)index
{
    //if the current item is using the deleted department, move the checkmark
    Department *dept = [self.departments objectAtIndex:index];
    if (self.item.department == dept)
    {
        UITableViewCell *noneCell = [self.tableView cellForRowAtIndexPath:[NSIndexPath indexPathForItem:self.departments.count inSection:0]];
        noneCell.accessoryType = UITableViewCellAccessoryCheckmark;
        [self.tableView reloadRowsAtIndexPaths:@[[NSIndexPath indexPathForItem:self.departments.count inSection:0]] withRowAnimation:UITableViewRowAnimationAutomatic];
    }

    //delete the department and save
    [dept.managedObjectContext deleteObject:dept];

    //delete the row
    [self.tableView deleteRowsAtIndexPaths:@[[NSIndexPath indexPathForItem:index inSection:0]] withRowAnimation:UITableViewRowAnimationFade];
}
Run Code Online (Sandbox Code Playgroud)

但是当表视图存在编辑模式时,没有行具有复选标记附件.我甚至尝试在编辑模式下手动重新加载行(如上面的代码所示).

当表格视图退出编辑模式时,如何确保行的附件刷新?

iphone cocoa-touch uitableview ios

3
推荐指数
1
解决办法
3327
查看次数

向数组添加函数

我正在向一个数组添加一个匿名函数,并尝试迭代执行其内容的数组.即使有一个简单的测试用例,我得到一个TypeError:不是一个函数.

我错过了一些简单的事吗?

//an array of functions
var signInFunctions = [];

//add a function to the array
signInFunctions.push(function() {
    console.log("hello world");
});

function userSignedIn() {
    //execute all functions in the signInFunctions array 
    for (var i = 0; i < signInFunctions.length; i++) {
        signInFunctions(i);
    }
}

userSignedIn();
Run Code Online (Sandbox Code Playgroud)

这是错误:

TypeError: 'function () {
console.log("hello world");
}' is not a function (evaluating 'signInFunctions(i)')
Run Code Online (Sandbox Code Playgroud)

javascript anonymous-function

3
推荐指数
1
解决办法
157
查看次数

移动设备的CSS字体大小

我已经完成了简单的页面,似乎对不同大小的屏幕反应良好.我没有做任何想要实现这一点的事情 - 只是避免固定尺寸等.

但是,一个页面有一个大字体的单个单词:

在此输入图像描述

当我调整浏览器大小时,所有其他内容都会正确显示,但标题词当然不会中断:

在此输入图像描述

处理这个问题的正确方法是什么?有没有办法根据屏幕宽度调整字体大小?

html css mobile responsive-design web

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

比较isEqual中的nil属性

编辑

从最初的答案来看,我不够清楚.我只是想检查我自己的自定义类的对象之间的相等性,结果取决于它的属性(我相信很标准)?我正在努力的一点是确保当两个实例的属性都为零时,属性被视为相等.

结束编辑

我想我的自定义类的对象返回YESisEqual时候它的所有属性都相同的参数传递的对象.这应该包括当两个属性nil.我最近了解到了[nil isEqual:nil]回报NO.

下面的实现会实现我想要的吗?

- (BOOL)isEqual:(id)object
    {
       if (object == self)
            return YES;
        if (!object || ![object isKindOfClass:[self class]])
            return NO;

        return (
            (!object.numberProperty && !self.numberProperty) || (object.numberProperty && self.numberProperty && [object.numberProperty isEqualToNumber:self.numberProperty])
            &&
            (!object.stringProperty && !self.stringProperty) || object.stringProperty && self.stringProperty && [object.stringProperty isEqualToNumber:self.stringProperty])
        ...etc
        );
    }
Run Code Online (Sandbox Code Playgroud)

我试图返回YES两个属性,nil并避免发送isEqualToNumberisEqualToString为零.

对于BOOLs我会猜测这是不必要的,因为一个BOOL不能nil- ==对于布尔人来说是否足够简单?

我缺少什么,或任何改善这种方法的方法?

cocoa equality objective-c nsnumber nsstring

3
推荐指数
1
解决办法
2787
查看次数

砌体animationWithDuration没有动画

我试图从我的viewController顶部底部动画UIWebView,我正在使用砌体(https://github.com/Masonry/Masonry).

我最初创建了我的webview,其大小为0 - (x,y,height和width),然后我尝试对其进行动画处理,以便webview为viewcontroller的"on top"设置动画.显示了webview,但它没有动画到位 - 它只是立即出现.任何有经验的人都可以指导我朝着正确的方向前进吗?

这是我的按钮动作

-(void)didPressBtn{
    self.infoView = [UIWebView new];
    self.infoView.scalesPageToFit = YES;
    self.infoView.backgroundColor = [UIColor whiteColor];
    self.infoView.delegate = self;
    [self.scrollView addSubview:self.infoView];
    [self.infoView makeConstraints:^(MASConstraintMaker *make) {
        make.edges.equalTo(@(0));
    }];


    [self.scrollView layoutIfNeeded];
    //FIXME: Hmmm it doesn't really animate!?
    [UIView animateWithDuration:1 animations:^{
        [self.scrollView setContentOffset:CGPointMake(0, 0)];
        [self.infoView makeConstraints:^(MASConstraintMaker *make) {
            make.edges.equalTo(self.scrollView);
        }];

        [self.scrollView layoutIfNeeded];

    } completion:^(BOOL finished) {
                [self.infoView loadRequest:[[NSURLRequest alloc] initWithURL:[[NSURL alloc] initWithString:NSLocalizedString(@"INFORMATION_URL", )] cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:15]];
    }];
}
Run Code Online (Sandbox Code Playgroud)

我的viewDidLoad

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.scrollView = [UIScrollView new]; …
Run Code Online (Sandbox Code Playgroud)

animation objective-c ios autolayout masonry-ios-osx

3
推荐指数
1
解决办法
4959
查看次数