Prototype Cell中的UILabel没有采取正确的位置

时间:2016-02-02 14:41:39

标签: ios swift uitableview uilabel

我在UIViewController中包含UITableView。该表视图只有一个原型单元格。

该单元格包含UIImageView和两个UILabel。第一个标签设置正确(位置和文本)。但第二个没有按预期定位。

我希望此标签在单元格的内容视图中以水平方向和垂直方向居中。但当我print(noFriendRequestLabel)时,结果是:

<UILabel: 0x7af81c00; frame = (-42 -21; 42 21); text = 'Aucune invitation'; opaque = NO; autoresize = RM+BM; userInteractionEnabled = NO; layer = <_UILabelLayer: 0x7af82680>>

标签采用正确的文字,但不是正确的位置。我使用故事板和自动布局。我不明白我做错了什么。

以下是cellForIndexPath()的代码:

// "Friends requests" section
         if indexPath.section == 0 {

            // If requests array is empty, show "No request" label
            if self.friendsRequestsArray.count == 0 {


                let cell = tableView.dequeueReusableCellWithIdentifier("friendCell", forIndexPath: indexPath) as! FriendCustomCell


                cell.noFriendRequestLabel.hidden = false
                cell.noFriendRequestLabel.text   = NSLocalizedString("No request", comment: "")

                cell.friendAvatar.hidden = true
                cell.friendName.hidden   = true
                cell.friendButton.hidden = true

                print(cell.noFriendRequestLabel)
                return cell
            }

            // Else display friends requests
            else {

                let cell = tableView.dequeueReusableCellWithIdentifier("friendCell", forIndexPath: indexPath) as! FriendCustomCell


                cell.noFriendRequestLabel.hidden = true
                cell.friendAvatar.hidden         = false
                cell.friendName.hidden           = false
                cell.friendButton.hidden         = false


                cell.friendAvatar.image = self.friendsRequestsArray[indexPath.row].getAvatar()
                cell.friendName.text    = self.friendsRequestsArray[indexPath.row].toString()

                cell.user = self.friendsArray[indexPath.row]

                cell.user.delegate = UserEventsManager()

                return cell
            }
        }





        // "Your friends" section
        else {

            let cell = tableView.dequeueReusableCellWithIdentifier("friendCell", forIndexPath: indexPath) as! FriendCustomCell

            cell.noFriendRequestLabel.hidden = true
            cell.friendAvatar.hidden         = false
            cell.friendName.hidden           = false
            cell.friendButton.hidden         = false

            cell.friendAvatar.image = self.friendsArray[indexPath.row].getAvatar()
            cell.friendName.text    = self.friendsArray[indexPath.row].toString()

            cell.user = self.friendsArray[indexPath.row]

            cell.user.delegate = UserEventsManager()

            return cell
        }

任何帮助都会感激不尽。

这是标签的约束:

enter image description here

1 个答案:

答案 0 :(得分:1)

我已经弄清楚发生了什么。

在包含UIViewController的{​​{1}}中,我向服务器发送请求,以获取朋友请求和用户的当前朋友。

因此,当此请求结束时,我重新加载表视图的数据。但是,之前在UITableView中,我在请求结束之前设置了数字

结果是我正在重新加载第二部分的数据,而第一部分的不是(我试图显示标签的地方)。

对我有用的是我在自定义numberOfRowsInSection()中添加了一个标记loadData,设置为UITableView。当我的控制器中的请求结束时,我将此标志设置为false。在true中,如果标记为numberOfRowsInSection(),则返回0;如果为false,则返回每个部分的行数。