为什么UITableViewCell textLabel属性是可选的?

时间:2015-07-20 22:34:03

标签: ios swift uitableview uikit

UITableViewCell detailTextLabel should be optionaldocumented,但为什么textLabel属性可选?

2 个答案:

答案 0 :(得分:2)

简短回答:节省资源。 textLabel属性是可选的,允许UILabel被懒惰地初始化。换句话说,除非您真正尝试访问它,否则该属性将保持为零。

您可以通过检查UITableViewCell的实例来验证调试程序:

import pandas as pd
import numpy as np

# simulate some data to generate corr_mat
# ==============================================
np.random.seed(0)
data = np.random.multivariate_normal([0,0,0], [[1,0.1,-0.2],[0.1,1,0.3],[-0.2,0.3,1]], 10000)
df = pd.DataFrame(data, columns='xyz abc def'.split())
corr_mat = df.corr()
corr_mat

        xyz     abc     def
xyz  1.0000  0.1216 -0.1901
abc  0.1216  1.0000  0.3014
def -0.1901  0.3014  1.0000

# processing
# =======================================
# mask on lower-triangle only
mask = np.ones_like(corr_mat, dtype=np.bool)
mask[np.triu_indices_from(mask)] = False
mask

array([[False, False, False],
       [ True, False, False],
       [ True,  True, False]], dtype=bool)

# reshape the correlation matrix, and select corr > 0.2
corr_stacked = corr_mat.stack()
corr_stacked[(corr_stacked > 0.2) & (mask.ravel())]

def  abc    0.3014
dtype: float64

# you can reset_index to put multi-level index to columns

答案 1 :(得分:1)

虽然没有正确记录,但它遵循相同的规则 - 必须设置正确的样式。也就是说,如果您使用自定义单元格(通常通过界面构建​​器配置),则会初始化自定义单元格 - 在这种情况下,没有任何默认视图会添加到单元格中,因为这样会浪费。

如果您使用除自定义单元格之外的任何其他样式,它将始终具有初始化的第一个标签,因此您可以使用它而不必担心(但在这种情况下,定义显然不能更改,因此它将始终声明为可选)。