UIScrollView 内的 UITableView 在 Xcode 7.0.1 中部分不可见?

Posted

技术标签:

【中文标题】UIScrollView 内的 UITableView 在 Xcode 7.0.1 中部分不可见?【英文标题】:UITableView inside UIScrollView partially invisible in Xcode 7.0.1? 【发布时间】:2015-10-24 07:45:40 【问题描述】:

所以我正在对使用 Xcode 6 编码的 Objective-C 应用程序进行更新,但这次使用 Xcode 7.0.1(最近使用 Xcode 7.1),我发现我的代码的特定部分出现了奇怪的结果。 首先,我必须声明,在之前版本的应用程序中,这部分代码运行良好。所以我们谈论的是一个 UIScrollView,其中包含一堆东西,我们可以找到三个 UITableView 显示三个顶部列表。

这是问题所在:由于在 Xcode 7.0.1 上工作,UITableViews 不再显示任何信息,但我无法找出原因,因为当您选择一个单元格时,每个单元格的信息实际上都在这里... .

有人遇到过同样的问题吗?

代码如下:

- (void)toppassionglob:(NSString *)topglobreceived 

//on retransforme le string des stats en data
NSData *toppassioner = [topglobreceived dataUsingEncoding:NSUTF8StringEncoding];

NSError *error3;
NSArray *jsonArray3 = [NSJSONSerialization JSONObjectWithData:toppassioner options:NSJSONReadingAllowFragments error:&error3];
if (jsonArray3) 
    dispatch_async(dispatch_get_main_queue(), ^

        //on purge notre tableau
        [toppassion removeAllObjects];

        //puis on traite les infos
        for (int i = 0; i < jsonArray3.count; i++)
        
            NSDictionary *jsonElement = jsonArray3[i];

            Games *newpassionner = [[Games alloc] init];
            newpassionner.name = jsonElement[@"pseudo"];
            newpassionner.score = jsonElement[@"nbvote"];
            newpassionner.image = jsonElement[@"nbvotesoffline"];

            [toppassion addObject:newpassionner];

        

        //puis le remplissage des tops
        [_toppassionnerglob reloadData];

    );

这是为了调用 infos(它有效)

然后在cellForRowAtIndexPath:函数里面:

RankCell *myCell = [tableView dequeueReusableCellWithIdentifier:@"RankCell"];

if (myCell == nil) 
    myCell = [[RankCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"];


    Games *thisone = [toppassion objectAtIndex:indexPath.row];
    myCell.textLabel.text = [NSString stringWithFormat:@"%ld", (long)indexPath.row+1];
    myCell.textLabel.textColor = [UIColor purpleColor];
    myCell.name.text = [NSString stringWithFormat:@"%@", thisone.name];
    myCell.rank.text = [NSString stringWithFormat:@"%@ votes, %@ offline", [self separateur:thisone.score], [self separateur:thisone.image]];


提前感谢您的回答。

编辑: 以下是 toplobreceived 和 jsonArray3 包含的内容

topglobreceived = (__NSCFString *)@"[\"伪\":\"Padadise\",\"nbvote\":\"7969\",\"nbvotesoffline\":\"364\", \"伪\":\"Roope\",\"nbvote\":\"5647\",\"nbvotesoffline\":\"0\",\"伪\":\"Spank78\" ,\"nbvote\":\"2696\",\"nbvotesoffline\":\"6\",\"伪\":\"All Ice\",\"nbvote\":\"680\ ",\"nbvotesoffline\":\"73\",\"伪\":\"NewPad\",\"nbvote\":\"73\",\"nbvotesoffline\":\"1\ ",\"伪\":\"Nell\",\"nbvote\":\"47\",\"nbvotesoffline\":\"0\",\"伪\":\" AppleFriend\",\"nbvote\":\"4\",\"nbvotesoffline\":\"0\"]"

jsonArray3 = (__NSCFArray *) @"7 个对象" [0] __NSCFDictionary * 3 个键/值对

[0] 结构 __lldb_autogen_nspair 键 NSTaggedPointerString * @"伪" value NSTaggedPointerString * @"Padadise"

[1] 结构 __lldb_autogen_nspair 键 NSTaggedPointerString * @"nbvote" 值 NSTaggedPointerString * @"7969"

[2] 结构 __lldb_autogen_nspair 键 __NSCFString * @"nbvotesoffline" 值 NSTaggedPointerString * @"364"

对于 jsonArray3,我只给出第一个对象(不要重复)

【问题讨论】:

请贴一些代码和图片。 当然。我已经编辑了问题。 我暂时无法发布图片(限制)... 我看不出你的代码有什么问题。你能记录topglobreceivedjsonArray3的值吗? 当然。完成。就像你说的那样,我的问题恰恰是看起来没有任何问题......(它在以前的版本中运行良好,没有任何改动) 【参考方案1】:

所以我想通了!

在较新版本的 Xcode 中,单元格(不是您在自定义单元格中设计的元素)的初始属性已更改。特别是单元格文本字段的背景,现在默认为白色,或者位于动态单元格的自定义元素之前。

为了解决我的问题,我必须编写这段代码,并且一切正常。

    myCell.textLabel.backgroundColor = [UIColor clearColor];

这不容易发现...

【讨论】:

以上是关于UIScrollView 内的 UITableView 在 Xcode 7.0.1 中部分不可见?的主要内容,如果未能解决你的问题,请参考以下文章

限制 UIScrollView 内的 UILabel 的高度

UIScrollview 内的 UIView 内的 UILabel 上的 UIGestureRecognizer

UIScrollview内的UIView内的UIButton,ARC问题

Swift - 通过点击 ScrollView 内的 ViewController 内的按钮来滚动 UIScrollView

UIScrollView 内的 CPTXYGraph

UIScrollView 内的 UIVIew 反弹回来