8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

如何限制 UITableView 中的行数,然后在“查看全部”按钮单击时显示所有行 swift iOS

A. D'Alfonso 2月前

272 0

我想限制 tableView 中的行数,比如说我最初只想显示 2 行,如果用户单击“查看全部”按钮,则显示所有行。tableView 的数据(数组)来自...

我想限制 tableView 中的行数,比如说我最初只想显示 2 行,如果用户单击“查看全部”按钮,则显示所有行。tableView 的数据(数组)来自 CoreData。我已将所有数据输入(保存)到另一个 ViewController 中,并在另一个 ViewController 上获取数据。可能存在数据为零的情况。目前,我正在显示所有行,就像 --> return array.count 一样,但我不知道如何实现我的条件?

帖子版权声明 1、本帖标题:如何限制 UITableView 中的行数,然后在“查看全部”按钮单击时显示所有行 swift iOS
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由A. D'Alfonso在本站《uitableview》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 您只需要一个属性来指示是否要显示所有行。

    var showAllRows = false
    

    在您的 numberOfRowsInSection 数据源方法中检查该值:

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        if showAllRows {
            return array.count
        } else {
            return min(2, array.count)
        }
    }
    

    然后您的按钮处理程序需要更新 showAllRows 并重新加载表格视图。

    showAllRows = true
    tableView.reloadData()
    
  • 声明一个布尔变量,

    var showMoreRows = false

           func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
                if showMoreRows {
                    return array.count
                } else if array.count > 2 {
                    return 2
                } else {
                   return 0
            } 
    

    点击更多会触发类似以下事件

    func showMoreRowsClick() {
    
    self.showMoreRows.toggle()
    self.tableView.reloadData()
    
    }
    
  • 我一直在尝试在 Windows 11 中的 WSL 上安装支持 GPU 的 Tensorflow 2.16.1。我的 Linux 安装是 Ubuntu 22.04。我一直按照这里的说明操作。这个过程需要我

    我一直在尝试在 Windows 11 中的 WSL 上安装支持 GPU 的 Tensorflow 2.16.1。我的 Linux 安装是 Ubuntu 22.04。我一直按照 这里的 。该过程要求我安装 cudnn 8.6.0,我正在尝试从 此处 。我已经在 Windows 中下载了适用于 cuda 11.x 的存档(Ubuntu22.04 x86_64 (Deb) 的本地安装程序),在 WSL 中挂载了下载位置并尝试从 bash 提示符运行脚本文件。但是,执行此操作时,我立即收到错误“意外标记换行符附近的语法错误”,并且安装中止。有人可以帮我解决这个问题吗?其次,我可以使用 conda 本身安装 cudnn 8.6 吗?如果是这样,我想了解一下。

    我已经为脚本提供了执行权限,但这没有什么区别。

  • 请仔细阅读安装说明。您已下载 deb 文件。该文件不可执行,必须使用包管理器进行安装。

  • 我遇到了一个不寻常的问题,在互联网上也找不到。我在 TensorFlow 2.15 上训练了一个分类模型。这个模型运行完美,但是当我尝试导入它时……

    我遇到了一个不寻常的问题,在互联网上也找不到。我在 TensorFlow 2.15 上训练了一个分类模型。这个模型运行完美,但当我尝试导入该模型时,出现以下错误。

    ValueError:参数 的值无效 reduction 。应为 {'sum', 'none', 'sum_over_batch_size', None} 之一。收到:reduction=auto

    预期的结果是,我的在 tensorflow 2.15 版本中训练的模型可以导入到 tensorflow 2.16 中并运行。

    任何关于此问题的帮助都将不胜感激。谢谢。

  • 我目前正在使用以下代码对几个时期的网络进行微调:es= keras.callbacks.EarlyStopping(monitor='loss', min_delta=1e-4,patience=10, verbose=True, restore_best_weights=True)

    我目前正在使用以下代码对网络进行几个时期的微调:

    es= keras.callbacks.EarlyStopping(monitor='loss', min_delta=1e-4,patience=10, verbose=True, restore_best_weights=True)
    history = model.fit(ft, steps_per_epoch=len(ft), callbacks=[es], epochs=150, verbose=verbose)
    model.save('model_best.h5')
    

    在 10 个时期(由 确定) monitor='loss' 内损失(由 监控)没有任何改善 patience=10 EarlyStopping 回调,并保存恢复到最佳遇到的权重的模型权重。

    的情况 回调 ——比如,如果没有 10 个没有改进的 epoch 序列,但表现最好的 epoch 不是最后一个。在这种情况下,哪些权重会被保存?它们是来自最后一个 epoch 的权重还是来自训练期间观察到的最佳 epoch 的权重?值得注意的是,当 verbose=True EarlyStopping EarlyStopping 不触发时,它不会产生任何输出,这让我不确定哪个模型版本被保留了。有人能解释一下在这种情况下会发生什么吗?

  • 由于工作需要,我将 Windows 电脑换成了 MacBook Pro,它搭载 Apple M3 Pro(36 GB),运行 macOS Sonoma(版本 14.5)。我发现了一些非常奇怪的事情。在一个小的

    由于工作需要,我将 Windows 电脑换成了 MacBook Pro,它搭载 Apple M3 Pro(36 GB),运行 macOS Sonoma(版本 14.5)。我发现了一些非常奇怪的事情。在一个小的示例脚本中,我设法提取了这个问题的根本原因。

    当我在 tensorflow/keras 之前导入 pandas 时,脚本会冻结。反之亦然。

    剧本:

    import numpy as np
    import os
    import pandas as pd
    from tensorflow.keras import layers, models
    
    print("Creating simple model...")
    try:
        model = models.Sequential([
            layers.Input(shape=(10,)),
            layers.Dense(64, activation='relu'),
            layers.Dense(1, activation='linear')
        ])
        print("Model created successfully.")
    except Exception as e:
        print(f"Error creating model: {e}")
    
    x_train = np.random.rand(100, 10)
    y_train = np.random.rand(100, 1)
    
    # Compile the model
    model.compile(optimizer='adam', loss='mean_squared_error')
    
    # Train the model
    try:
        model.fit(x_train, y_train, epochs=5, batch_size=32)
        print("Model training completed successfully.")
    except Exception as e:
        print(f"Error during training: {e}")
    

    运行时,给出以下输出:

    Creating simple model...
    2024-05-31 18:04:07.639131: I metal_plugin/src/device/metal_device.cc:1154] Metal device set to: Apple M3 Pro
    2024-05-31 18:04:07.639149: I metal_plugin/src/device/metal_device.cc:296] systemMemory: 36.00 GB
    2024-05-31 18:04:07.639154: I metal_plugin/src/device/metal_device.cc:313] maxCacheSize: 13.50 GB
    2024-05-31 18:04:07.639170: I tensorflow/core/common_runtime/pluggable_device/pluggable_device_factory.cc:305] Could not identify NUMA node of platform GPU ID 0, defaulting to 0. Your kernel may not have been built with NUMA support.
    2024-05-31 18:04:07.639186: I tensorflow/core/common_runtime/pluggable_device/pluggable_device_factory.cc:271] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 0 MB memory) -> physical PluggableDevice (device: 0, name: METAL, pci bus id: <undefined>)
    

    脚本在此时冻结,必须终止。当我交换导入的顺序时

    from tensorflow.keras import layers, models
    import pandas as pd
    

    我得到以下信息:

    Creating simple model...
    2024-05-31 18:07:18.879661: I metal_plugin/src/device/metal_device.cc:1154] Metal device set to: Apple M3 Pro
    2024-05-31 18:07:18.879680: I metal_plugin/src/device/metal_device.cc:296] systemMemory: 36.00 GB
    2024-05-31 18:07:18.879685: I metal_plugin/src/device/metal_device.cc:313] maxCacheSize: 13.50 GB
    2024-05-31 18:07:18.879705: I tensorflow/core/common_runtime/pluggable_device/pluggable_device_factory.cc:305] Could not identify NUMA node of platform GPU ID 0, defaulting to 0. Your kernel may not have been built with NUMA support.
    2024-05-31 18:07:18.879717: I tensorflow/core/common_runtime/pluggable_device/pluggable_device_factory.cc:271] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 0 MB memory) -> physical PluggableDevice (device: 0, name: METAL, pci bus id: <undefined>)
    Model created successfully.
    Epoch 1/5
    2024-05-31 18:07:19.269585: I tensorflow/core/grappler/optimizers/custom_graph_optimizer_registry.cc:117] Plugin optimizer for device_type GPU is enabled.
    4/4  1s 16ms/step - loss: 0.1177 
    Epoch 2/5
    4/4  0s 5ms/step - loss: 0.1078 
    Epoch 3/5
    4/4  0s 5ms/step - loss: 0.0932 
    Epoch 4/5
    4/4  0s 5ms/step - loss: 0.1008 
    Epoch 5/5
    4/4  0s 5ms/step - loss: 0.0865 
    Model training completed successfully.
    

    请注意,我在脚本中甚至没有使用 pandas。作为参考,我导入了 os,但也没有在脚本的任何地方使用它,但这不会影响它。

    以下是我的环境包 pip 列表:

    Package                      Version
    ---------------------------- -----------
    absl-py                      2.1.0
    astunparse                   1.6.3
    Bottleneck                   1.3.7
    cachetools                   5.3.3
    certifi                      2024.2.2
    charset-normalizer           3.3.2
    db-dtypes                    1.2.0
    flatbuffers                  24.3.25
    gast                         0.5.4
    google-api-core              2.19.0
    google-auth                  2.29.0
    google-cloud-bigquery        3.23.1
    google-cloud-core            2.4.1
    google-crc32c                1.5.0
    google-pasta                 0.2.0
    google-resumable-media       2.7.0
    googleapis-common-protos     1.63.0
    grpcio                       1.64.0
    grpcio-status                1.62.2
    h5py                         3.11.0
    idna                         3.7
    importlib_metadata           7.1.0
    joblib                       1.4.2
    keras                        3.3.3
    libclang                     18.1.1
    Markdown                     3.6
    markdown-it-py               3.0.0
    MarkupSafe                   2.1.5
    mdurl                        0.1.2
    ml-dtypes                    0.3.2
    namex                        0.0.8
    numexpr                      2.8.7
    numpy                        1.26.4
    opt-einsum                   3.3.0
    optree                       0.11.0
    packaging                    24.0
    pandas                       2.2.1
    pip                          24.0
    proto-plus                   1.23.0
    protobuf                     4.25.3
    pyarrow                      16.1.0
    pyasn1                       0.6.0
    pyasn1_modules               0.4.0
    Pygments                     2.18.0
    python-dateutil              2.9.0.post0
    pytz                         2024.1
    requests                     2.32.3
    rich                         13.7.1
    rsa                          4.9
    scikit-learn                 1.4.2
    scipy                        1.11.4
    setuptools                   69.5.1
    six                          1.16.0
    tensorboard                  2.16.2
    tensorboard-data-server      0.7.2
    tensorflow                   2.16.1
    tensorflow-io-gcs-filesystem 0.37.0
    tensorflow-macos             2.16.1
    tensorflow-metal             1.1.0
    termcolor                    2.4.0
    threadpoolctl                3.5.0
    tqdm                         4.66.4
    typing_extensions            4.12.0
    tzdata                       2024.1
    urllib3                      2.2.1
    Werkzeug                     3.0.3
    wheel                        0.43.0
    wrapt                        1.16.0
    zipp                         3.19.0
    

    来自评论的建议 (@Ze'ev Ben-Tsvi)

    import numpy as np
    import os
    import pandas as pd
    from tensorflow.keras import layers, models
    
    print("Creating simple model...")
    
    try:
        print("Initializing Sequential model...")
        model = models.Sequential()
        print("Adding input layer...")
        model.add(layers.Input(shape=(10,)))
        print("Adding first Dense layer...")
        model.add(layers.Dense(64, activation='relu'))
        print("Adding output Dense layer...")
        model.add(layers.Dense(1, activation='linear'))
        print("Model created successfully.")
    except Exception as e:
        print(f"Error creating model: {e}")
    
    x_train = np.random.rand(100, 10)
    y_train = np.random.rand(100, 1)
    
    # Compile the model
    try:
        print("Compiling model...")
        model.compile(optimizer='adam', loss='mean_squared_error')
        print("Model compiled successfully.")
    except Exception as e:
        print(f"Error during compilation: {e}")
    
    # Train the model
    try:
        print("Training model...")
        model.fit(x_train, y_train, epochs=5, batch_size=32)
        print("Model training completed successfully.")
    except Exception as e:
        print(f"Error during training: {e}")
    

    该脚本的输出是:

    Initializing Sequential model...
    Adding input layer...
    Adding first Dense layer...
    Adding output Dense layer...
    Model created successfully.
    Compiling model...
    Model compiled successfully.
    Training model...
    Epoch 1/5
    

    这样写的话,执行起来似乎更进一步。现在它不再卡在 models.Sequential 上,而是卡在 model.fit 上。

    再次交换导入的顺序(先 tensorflow 再 pandas)我得到:

    Creating simple model...
    Initializing Sequential model...
    Adding input layer...
    Adding first Dense layer...
    Adding output Dense layer...
    Model created successfully.
    Compiling model...
    Model compiled successfully.
    Training model...
    Epoch 1/5
    4/4  0s 1ms/step - loss: 0.4620  
    Epoch 2/5
    4/4  0s 636us/step - loss: 0.3263
    Epoch 3/5
    4/4  0s 1ms/step - loss: 0.2322 
    Epoch 4/5
    4/4  0s 629us/step - loss: 0.1395
    Epoch 5/5
    4/4  0s 690us/step - loss: 0.1251
    Model training completed successfully.
    

    这里的主要问题是,我从来没有遇到过异常,即使将所有导入单独包装在 try/catch 块中也没有。似乎有一些东西要么吞掉错误,要么什么都没有抛出。

  • 我正在尝试设置一个聊天应用程序,但目前,我被困在一个 UI 点上,UI 部分无法正确处理。现在,我试图显示带有文本消息的图像,但我的 UI 部分不起作用

    我正在尝试设置一个聊天应用程序,但目前我被困在一个 UI 点上,UI 部分无法正确处理。现在,我试图显示带有文本消息的图像,但我的 UI 部分无法正常工作。请查看随附的屏幕截图。

    该屏幕截图取自 iPhone。

    Image

    以下是我想做的事情:

    Image

    代码:-

    我只发布了发送方部分,因为左侧(接收方)使用了相同的代码。

    import UIKit
    
    class SenderTVC: UITableViewCell {
        @IBOutlet weak var senderImage: UIImageView!
        @IBOutlet weak var lblSenderMsg: UILabel!
        @IBOutlet weak var lblSenderTime: UILabel!
    }
    

    老师

    Image

    问题:如何显示带有文字的图像,如原始图像(第二张屏幕截图)所示?

    有人能向我解释一下如何在同一个单元格中显示带有文字的大尺寸图像吗 table view ?我试过了,但还没有结果。

  • 似乎从 tenorflow.keras 导入会在某些地方覆盖名称,也许您没有从您认为的环境中运行。只是出于好奇,如果您在 try 块中创建没有层的顺序模型,并在添加每个层之前(以及在构建模型本身之前)打印出一些内容,那么冻结之前的最后一个操作是什么?

  • 如第一个屏幕截图所示,您已经在单元格中显示了图像和文本。您的问题难道不应该是关于如何使图像变大吗?您没有提供有关如何设置单元格的详细信息。很可能您只是需要更好的约束。

  • 我无法弄清楚以下问题:我制作了一个应该可用于多种苹果设备的菜单。我在 xcode 的几个模拟器(现在是 14.2)中对其进行了测试。有些模拟器运行良好,但不是全部......

    我无法弄清楚以下问题:我制作了一个应该可用于多种苹果设备的菜单。我在 xcode 的几个模拟器(现在是 14.2)中对其进行了测试。有些模拟器运行良好,但不是全部。

    例如,模拟器不会激活 CollectionView 中的 didSelectItemAt:

    • iPad Air(第四代 - iOS 14.2)- 1180.0、820.0
    • iPad 第 10 代 - iOS 16.2
    • iPad Pro 11.0 英寸(第二代)(iOS 14.2)1194.0,834.0
    • iPad Pro 12.9 英寸 1366.0, 1024.0
    • 菜单的布局看起来不错,而且运行良好。

    在模拟器中 didSelectItemAt 运行良好:

    • iPhone 11 Pro
    • iPhone 12-iOS 14.2-844.0,390.0
    • iPad Air 2 - iOS 14.2 - 1024.0, 768.0
    • iPad(第六代 - iOS 16.2)1024.0、768.0
    • iPad(第 9 代 - iOS 16.2)1080.0、810.0
    • iPad Pro(9.7 英寸 - iOS 14.4)1024.0, 768.0

    我发现在 Debug ViewHierachy 中,例如 ipad Air 2 和 ipad 11 Pro 之间存在差异。iPad 11 Pro 增加了一个我无法解释的额外 UIView。我认为这超出了项目范围。我想这就是为什么在使用 eq iPad 11 Pro 时无法选择项目的原因。但我不知道如何调整它。(另见图片)。

    iPad Air 2

    iPad Air 2

    iPad 11 Pro

    iPad 11 Pro

  • 环境不是问题。我通过从终端而不是 VSCode 运行它进行了仔细检查。我手动激活了环境并运行了 test.py python 脚本。我做了你建议的额外测试,现在将它们编辑到主帖中。

  • VGR 2月前 0 只看Ta
    引用 14

    @HangarRash,你说得对,你能帮帮我吗?如何用多行文本显示更大的图像?

  • emay 2月前 0 只看Ta
    引用 15

    我没想到将模型的构建分解成步骤会一路顺利……也许你有内存问题?顺便说一句,你还可以创建一个回调对象并将其添加到 fit' 回调中,并在任何 epoch/batch/train 开始/结束之前打印你想要的任何内容(你应该预料到你的终端会充满打印内容)

  • 我找到了解决方案。无需修改 view.frame,只需修改 superview.frame 即可。显然,这对于更高型号的 iPad 和 iPhone 来说是必要的。

       // animate the gamescene to view of close the mainmenu.
        UIView.animate(withDuration: 0.5, animations: ({
            self.gameBackgroundView?.superview?.frame = CGRect(x:slideToXPosition,
                                                               y:0,
                                                               width: frameSize!.width,
                                                               height: frameSize!.height)
    
            
        })) { _ in
          
            completion?()
        }
    
  • 我确实认为它与内存有关,尽管我已经想不出可以做什么了。所有代码片段在我的 Windows 机器上都能完美运行,我克隆了环境并匹配了每个包的所有版本。我无法在 Windows 上复制这一点。我将尝试实现回调并在明天详细检查。

  • 导入 pandas AFTER tensorflow 似乎可以解决问题:

    from tensorflow.keras import layers, models
    import pandas as pd
    

    来源: https://evoila.com/blog/debugging-tensorflow-pandas-import-issue-macos-sonoma-apple-m3-pro/

  • 您应该设置:

    func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
            return UITableView.automaticDimension
    }
    
    

    将约束设置为 ImageView -> 宽度和高度例如 150x150

    并将 ImageView 的“ Content Mode ”属性设置为“ Aspect Fill

    之后将约束设置为文本或标签,高度 >= 10,行 = 0,并将约束设置为时间标签

    所有图像和标签必须具有顶部和底部约束才能自动增加 tableviewcell 高度

    你可以检查这个链接可能会有帮助: https://github.com/MessageKit/MessageKit

  • 我花了几个小时调试这个问题,找到了一个令人满意的解决方案。它不需要导入顺序交换快速修复就可以工作。我决定发布答案,以防其他人遇到这个问题。

    将 TensorFlow 降级到 2.15.0 版本解决了该问题,允许脚本运行,而不管 pandas 和 tensorflow 的导入顺序如何。

    pip install tensorflow==2.15.0
    

    背景:冻结发生在 TensorFlow 的 execute.py 中的 quick_execute 函数中,并且仅在先导入 pandas 时才会发生,原因如下:

    def quick_execute(op_name, num_outputs, inputs, attrs, ctx, name=None):
        device_name = ctx.device_name
        try:
            ctx.ensure_initialized()
            tensors = pywrap_tfe.TFE_Py_Execute(ctx._handle, device_name, op_name, inputs, attrs, num_outputs)
        except core._NotOkStatusException as e:
            if name is not None:
                e.message += " name: " + name
            raise core._status_to_exception(e) from None
        except TypeError as e:
            keras_symbolic_tensors = [x for x in inputs if _is_keras_symbolic_tensor(x)]
            if keras_symbolic_tensors:
                raise core._SymbolicException(
                    "Inputs to eager execution function cannot be Keras symbolic "
                    "tensors, but found {}".format(keras_symbolic_tensors))
            raise e
        return tensors
    

    冻结的函数调用是:

    tensors = pywrap_tfe.TFE_Py_Execute(ctx._handle, device_name, op_name, inputs, attrs, num_outputs)
    

    我无法确定为什么 TensorFlow 中的这个函数会导致冻结,因为它不允许我从该点进一步进入,但降级到 TensorFlow 2.15.0 可以避免这个问题。

返回
作者最近主题: