小编Sma*_*ree的帖子

UITableViewCellAccessoryCheckmark的逻辑

我想做一个典型的情况:当用户选择任何单元格时,它的accessoryType会以复选标记开启.只有一个单元格的accessoryType可以是复选标记.然后我想保存在NSUserDefaults indexPath.row中,这样我的应用程序就能知道选择了哪个单元用户并对选项进行了一些更改.所以我写了这个错误的代码:

didSelectRowAtIndexPath方法

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    // checkedIndexPath is NSIndexPath

    if(self.checkedIndexPath)
    {
        UITableViewCell* uncheckCell = [tableView
                                        cellForRowAtIndexPath:self.checkedIndexPath];
        uncheckCell.accessoryType = UITableViewCellAccessoryNone;
    }
    UITableViewCell* cell = [tableView cellForRowAtIndexPath:indexPath];
    cell.accessoryType = UITableViewCellAccessoryCheckmark;

    self.checkedIndexPath = indexPath;

    [[NSUserDefaults standardUserDefaults]setObject:[NSNumber numberWithInt:self.checkedIndexPath.row]forKey:@"indexpathrow" ];
} 
Run Code Online (Sandbox Code Playgroud)

的cellForRowAtIndexPath

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    // Part of code from cellForRowAtIndexPath

    if(indexPath.row == [[[NSUserDefaults standardUserDefaults]objectForKey:@"indexpathrow"]intValue ])
    {
        cell.accessoryType = UITableViewCellAccessoryCheckmark;
    }
    else 
    {
        cell.accessoryType = UITableViewCellAccessoryNone;
    }

        return cell;
}
Run Code Online (Sandbox Code Playgroud)

但是,这段代码很糟糕.当你打开时UITableView,表中已经有一个已经选中的单元格,当你按下另一个单元格时,有两个checkmarked单元格...如何改进我的代码或者我应该改变它?有什么建议 ?谢谢 !

iphone xcode objective-c uitableview ios

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

NSMutableArray是零.为什么?

我添加对象后,NSMutableArray它变成了nil(我检查了NSLog)


guests = [[NSMutableArray alloc]init];
guests = [localDictionary objectForKey:@"guestsArray"];

[guests addObject:@"1"];
[guests addObject:@"12"];
[guests addObject:@"31"];

if(guests == nil)
{
    NSLog(@"WHY?");
}
Run Code Online (Sandbox Code Playgroud)

你知道为什么会这样吗?我该怎么检查?

iphone objective-c nsarray

0
推荐指数
1
解决办法
421
查看次数

IBOutlet不会对代码做出反应

UIImageView在IB中创建了一个并将其连接到IBOutlet:

@property (nonatomic, retain) IBOutlet UIImageView *alertImage;
Run Code Online (Sandbox Code Playgroud)

但是,UIImageView根本不会对我的代码做出反应.我尝试设置插座,然后更改属性以测试:

alertImage = [[UIImageView alloc] init];
alertImage.hidden = YES;
Run Code Online (Sandbox Code Playgroud)

但图像并没有消失.我究竟做错了什么?

cocoa-touch objective-c iboutlet ios

0
推荐指数
1
解决办法
88
查看次数

"if"语句不能正常工作?

我在我的应用程序中制作了自定义键盘.当用户按空格键时,此代码运行:

NSString *lastChar = [myTextField.text substringFromIndex:[myTextField.text length] -  1];

NSLog(@"lastChar is `%@`", lastChar);

if (lastChar != @" ")
{
   NSString *currentString = [NSString stringWithFormat:@"%@ ", myTextField.text];
   [myTextField setText:currentString];
}
Run Code Online (Sandbox Code Playgroud)

我做了一个检查,如果用户使用的是最后一个符号space,他将无法再次使用它(在我的情况下不需要).但是,代码if statement仍然在运行.所以我已经检查了NSLog,即使最后一个字符是space,if statement执行下的代码.怎么会发生?有人能指出我的愚蠢错误吗?提前致谢.

更新: 对不起,我总是忘记如何比较Objective-C中的字符串,我已经标记了这个问题,谢谢大家对你的问题.

if-statement objective-c ios

0
推荐指数
1
解决办法
110
查看次数

将 CIImage 调整为精确大小

我正在寻找一种方法将 a 调整CIImage为精确大小,因为我正在使用混合CIFilter并且需要两个 blendedCIImage的大小相同。我需要使用 aCIFilter来调整图像大小,因为它在内存方面对我来说会更便宜,而且我不能使用 Core Graphics 等。

我知道有一个CILanczosScaleTransform过滤器可用,但它不允许调整精确大小,只能缩小或放大。

有没有办法使 aCIImage成为一个精确的大小,只使用Core Image

core-image scale cifilter ciimage swift

0
推荐指数
1
解决办法
1883
查看次数