小编Ram*_*ino的帖子

UICollectionView的单元格消失了

发生了什么

目前我有一个使用两个UICollectionViews内部的应用程序UITableView.这样我创建了一个类似应用程序的Pulse News.我的问题是,有时第6行和第11行完全消失,留下一个空白区域应该是单元格.我真的不介意,如果所有细胞都是这样的(这种方式我可以假设我没有做正确的事情),但问题是,正好发生在那些特定的细胞上.

我的理论

第6行和第11行是我开始滚动时出现的行,所以默认情况下我可以看到5个单元格,当我进行第一次水平滚动时,第6行会出现(有时会出现空白).

是)我有的

我目前唯一要做的就是:

 [self.collectionView registerNib:[UINib nibWithNibName:CELL_NIB_NAME bundle:nil] forCellWithReuseIdentifier:CELL_IDENTIFIER];
Run Code Online (Sandbox Code Playgroud)

viewDidLoad.在创建细胞时:

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
    MyCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:CELL_IDENTIFIER forIndexPath:indexPath];

    NSMutableDictionary *dictionary = [self.DataSource objectAtIndex:[indexPath row]];

    [cell buildViewWithDictionary:dictionary withReferenceParent:self.referenceViewController];

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

所以在我的承诺中没有任何幻想在这里发生.我虽然在数据源(虚拟JSON文件)上有问题,但有时它工作正常并且单元格显示,所以我猜从那部分是可以的.

所以我的"问题":有谁知道发生了什么?我真的不想说这是来自iOS的错误,但我想不出别的什么.


编辑1.0

令人惊讶的是这种方法

-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath;
Run Code Online (Sandbox Code Playgroud)

indexPath不计算[0,5]的情况下从[0,4]变为[0,6].我第一次真正在iOS中看到这种情况.


编辑2.0

我已经改变了创建单元格的方式,而不是出列我使用旧方法:

NSArray *nib = [[NSBundle mainBundle] loadNibNamed:CELL_NIB_NAME owner:self options:nil];
MyCell *cell = (MyCell *)[nib objectAtIndex:0];
Run Code Online (Sandbox Code Playgroud)

仍然是同样悲伤的结果.

xcode ios uicollectionview uicollectionviewcell

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

如何切换回已经加载的UIViewController?

我在故事板上有一个视图,它有一个按钮来执行某个动作.但是,要执行此操作,用户必须登录.按钮处理程序将测试用户是否已登录并在是(YES)时执行一个segue,如果为NO则执行另一个segue.NO segues推送到登录视图控制器.还有另一个segue连接回第一个视图控制器,因此如果登录成功,用户可以从中断的地方继续.视图控制器嵌入在导航控制器中.

问题是,'return'segue正在加载视图控制器的一个全新实例,而不是引用原始实例,因此我最终得到了空接口元素和内存中该视图控制器的2个副本.

如何返回视图控制器的原始实例?

objective-c storyboard ios segue

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

我应该用什么来替换弃用的sizeWithFont:方法?

给定一个字符串长度(具有相应的正确字体大小),我有一个方法可以为UITextView提供完美的大小:

- (NSInteger) heightOfLabel:(NSString*) string {
    CGSize maximumLabelSize = CGSizeMake([[UIScreen mainScreen] bounds].size.width - 40, FLT_MAX);
    CGSize expectedLabelSize = [[NSString stringTrimmedForLeadingAndTrailingWhiteSpacesFromString:string]
             sizeWithFont:[UIFont systemFontOfSize:15]
             constrainedToSize:maximumLabelSize 
             lineBreakMode:NSLineBreakByWordWrapping];

    return expectedLabelSize.height + 5;
}
Run Code Online (Sandbox Code Playgroud)

事实上,即使在iOS7中,它仍然让我完美契合.虽然现在它提出了一个警告方法,说我不应该使用'sizeWithFont:contrainedToSize:lineBreakMode'.

它现在说我应该使用-boundingRectWithSize:options:attributes:context:

这个方法对iOS7来说并不陌生,因此我认为可以在堆栈溢出时询问它,而不是去官方的苹果开发者论坛.

我有三个问题:

1)因为它被弃用了,这是否意味着我应该更换它,尽管它仍然有效?

2)我已经尝试了许多不同的boundingRectWithSize:方法,但是它们从来都不是完美的,它似乎总是略有不足(正如许多stackoverflow问题所指出的那样) - 是否有一个完美的替代方法,这种方法完全取而代之与我以前的方法一样,麻烦最小?

3)为什么要删除这种方法?是因为与其他方法的重叠吗?

objective-c deprecated nsstring

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

MacOS 上焦点跟随鼠标

问题:如何为 MacOS 上的所有窗口/应用程序实现焦点跟随鼠标

上下文:诸如“defaults write com.apple.terminal FocusFollowsMo​​use -string true”之类的终端命令仅针对终端窗口实现所需的行为。

类似帖子:在 MacOS 上实现“鼠标跟随焦点”

macos macos-big-sur

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

如何获取最近添加的parse.com对象

有没有办法在Parse中进行查询以获取最近添加的PFObject类型?

我知道我可以使用大于标准的查询,但如果有一个函数可以在没有日期时添加最新的对象,那将非常有用.

ios parse-platform

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

NSUserDefaults不会删除密钥对象

当用户登录我的应用程序时,我从我的JSON服务器下载令牌并将其存储在NSUserDefaults中,如下所示:

[[NSUserDefaults standardUserDefaults] setValue:token forKey:TOKEN];
Run Code Online (Sandbox Code Playgroud)

当用户在后续页面中注销时,我调用此方法并返回登录屏幕:

[[NSUserDefaults standardUserDefaults] setObject:@"" forKey:TOKEN];
Run Code Online (Sandbox Code Playgroud)

(之前我叫[[NSUserDefaults standardUserDefaults] removeObjectForKey:TOKEN];)

无论我如何尝试删除此用户默认值,每当我加载我的应用程序时,它总是显示完整的令牌而不是空字符串也不是空值.

在阅读时,显然它与读写周期有关?但即使我离开它一段时间,关键仍然存在.这是模拟器问题吗?

无论原因是什么,我该如何解决这个问题?

persistence login nsuserdefaults

9
推荐指数
2
解决办法
3260
查看次数

你在哪里储存可重复使用的嘲笑?

你能解释一下组织单元测试的正确方法吗?例如,如果想模拟我的struct依赖项,我需要创建一个"实现"某个接口的模拟依赖项.

我应该在哪里创建这个模拟?它应该在同一个测试文件中创建吗?但是如果我在另一个测试中需要它呢?Go不允许在同一个包的2个不同文件中定义具有相同名称的结构(例如UserServiceMock).那么定义这个模拟结构的最佳位置是什么?

另一个问题.我应该自己实现这种模拟还是有一些库/工具可以让我这样做?

testing unit-testing mocking go

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

将返回的错误分配给下划线

我一直在阅读github.com/lib/pq中的一些Golang代码,它提供了与postgres数据库交互的驱动程序.

在代码中,我碰到这个:

go func() {
    select {
    case <-done:
        _ = cn.cancel()
        finished <- struct{}{}
    case <-finished:
    }
}()
Run Code Online (Sandbox Code Playgroud)

取消功能如下:

func (cn *conn) cancel() error
Run Code Online (Sandbox Code Playgroud)

据我所知,下划线不被用作关于类型的静态断言(因此编译器不会评估任何副作用,就我所见(如本例所示))并且它不是'作为作者可能想要丢弃它的第二个参数.

总结:为什么要将取消函数的结果(错误)分配给下划线?

error-handling go pq

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

简单的Perl For-Loop

我有一个for循环,我想每次增加0.1的变量,但是值的变化与增量不同,我不确定为什么.

我已经简化了for循环,它仍然提供了一个奇怪的输出:

for (my $t = 1000; $t < 1500 ;$t+=0.1) {
print "$t\n";
}
Run Code Online (Sandbox Code Playgroud)

它打印:

1034.9
1035
1035.1
1035.2
1035.3
1035.4
1035.49999999999
1035.59999999999
1035.69999999999
1035.79999999999
1035.89999999999
1035.99999999999
1036.09999999999
1036.19999999999
1036.29999999999
[it then goes on like this to 1500]
Run Code Online (Sandbox Code Playgroud)

我不知道小数位的来源.这是我对Perl的理解的问题吗?

提前致谢.

floating-point perl for-loop

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

向下舍入到Perl中的不同小数位数

采用浮点数,我想向下舍入,具体取决于用户定义的"bin"大小.因此,容器大小将根据用户偏好而改变.例如,箱尺寸可以是0.5,0.1,1或甚至0.01.

我的目标是确定浮点数落入哪个bin.举个例子:

0.1箱尺寸:

2348.285 will fall into a 2348.2 bin

238.592 will fall into a 238.5 bin
Run Code Online (Sandbox Code Playgroud)

0.5箱尺寸:

2348.285 will fall into a 2348.0 bin

238.592 will fall into a 238.5 bin
Run Code Online (Sandbox Code Playgroud)

0.01箱尺寸:

2348.285 will fall into a 2348.28 bin

238.592 will fall into a 238.59 bin
Run Code Online (Sandbox Code Playgroud)

一箱尺寸:

2348.285 will fall into a 2348 bin

238.592 will fall into a 238 bin
Run Code Online (Sandbox Code Playgroud)

我已经调查在Perl四舍五入例如,地板(),sprintf的(),也SUBSTR()方法,但是,没有人做了很多想我想要做的,或者说,我不能让他们做什么,我想.如果给定用户定义的bin大小,那么整齐的代码会动态地改变浮点数向下舍入的最低值?

floating-point perl

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