登录 用户中心() [退出] 后台管理 注册
   
您的位置: 首页 >> SoftHub关联区 >> 主题: [macos/appkit/ios/uikit]巨坑:macos的 NSTableView 在 NSViewController 为父控件的情况下的数据不显示问题     [回主站]     [分站链接]
[macos/appkit/ios/uikit]巨坑:macos的 NSTableView 在 NSViewController 为父控件的情况下的数据不显示问题
clq
浏览(45) - 2024-03-03 16:03:02 发表 编辑

关键字:

[macos/appkit/ios/uikit]巨坑:macos的 NSTableView 在 NSViewController 为父控件的情况下的数据不显示问题

实际上应该是 mac 版 TableView 数据不显示的问题。
表现为关联 NSScrollView 后,拖动滚动条后会发现数据表消失了,在某些情况下甚至不会显示!
而几乎相同的代码在 ios 的 UITableView 则是非常好的。
查找了很多文档后没有一个成功的。因为文章都比较老一度认为是接口发生了变化,想找出到底要加什么参数。
唉,我搞到了昨晚 3 点也没成功。早上起来想起之前 mac 的 memo 也是因为滚动条的问题显示不正常。然后去掉了滚动视图。这时候是成功的,但表格控件会非常高,当然我知道滚动视图肯定要的。
仔细检查了代码,甚至是一模一样照抄也仍然有问题。晕!!!

这时想起之前创建某个控件在 golang 会自动释放的情况,这时是要把指针放到全局中去才行的。而苹果的 arc 编译情况下也有可能是这样。
最后一测试,果然。将表格控件和滚动条所在的父控件的指针改为全局变量后就 ok 了。但我这生成的代码是能用的啊,其他 edit,panel,memo 也都是局部变量啊。

再仔细分析代码,发现因为扫的代码大多以 ViewController 为主,如果是局部手动生成的,因为它本身不是控件所以生成后就会被释放掉。而 edit 这些本身是控件是会留在界面上的,所以实际上转换成了半个 “强引用” 。那么为什么网上的示例没有这个问题呢? 因为它们都是示例,显然是用 app 中默认的 ViewController 做的,而默认的 vc 本身就是全局变量!

好了,破案了。不得不吐槽一下,这时候 vc 释放了,对应的控件也不会在查找它时报错也是够够的,这其实是一个 bug 。再容易误导了。这也是委托机制的大问题。

这也没办法难怪 appkit 老被吐槽比 uikit 差好多,又老。确实是如此。光好多控件都要手工加滚动视图就很费时间,要理解它更是几乎不可能,里面苹果做了太多的魔法代码了。另外它有点象安卓,在界面设计器时隐藏掉了很多纯代码操作要操作的步骤,几乎让纯代码环境无法使用相同的功能。我在安卓也也碰到过很多这种情况,这是开发人员太不负责了,应该也更新纯代码库,而不是在设计器中搞大量的隐藏步骤来简化界面设计就了事。

当然了,吐槽归吐槽,苹果和安卓显然是不会改正的。这也难怪第三方 ui 大行其道,确实这官方 ui 太难用了。













总数:0 页次:1/0 首页 尾页  
总数:0 页次:1/0 首页 尾页  


所在合集/目录



发表评论:
文本/html模式切换 插入图片 文本/html模式切换


附件:



NEWBT官方QQ群1: 276678893
可求档连环画,漫画;询问文本处理大师等软件使用技巧;求档softhub软件下载及使用技巧.
但不可"开车",严禁国家敏感话题,不可求档涉及版权的文档软件.
验证问题说明申请入群原因即可.

Copyright © 2005-2020 clq, All Rights Reserved
版权所有
桂ICP备15002303号-1