Закрытие NSInvalidArgumentException - PullRequest
       4

Закрытие NSInvalidArgumentException

0 голосов
/ 03 октября 2019

Я занимаюсь созданием пользовательского интерфейса, который в основном не использует раскадровку, и когда я начинаю отладку, происходит сбой приложения, и возникает эта ошибка.

Я пытался удалить "main" из информации.plist и целевой объект, но он не работает

2019-10-03 12: 43: 13.699871 + 0200 provolone [3580: 115566] *** Завершение работы приложения из-за необработанного исключения «NSInvalidArgumentException»,причина: «Не могу добавить себя как подпредставление»

Это myViewController, Xcode 11.1 GM seed (11A1027)

import UIKit
class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
          let view = UILabel()

          view.frame = CGRect(x: 0, y: 0, width: 252, height: 60)
          view.backgroundColor = .white
          self.view = view

          view.textColor = UIColor(red: 0.33, green: 0.36, blue: 0.49, alpha: 1)
          view.font = UIFont(name: "OpenSans-Bold", size: 26)
          view.numberOfLines = 0
          view.lineBreakMode = .byWordWrapping
          let paragraphStyle = NSMutableParagraphStyle()
          paragraphStyle.lineSpacing = 0

          // Line height: 30 pt

          view.textAlignment = .center
          view.attributedText = NSMutableAttributedString(string: "Connect with people\nyou love.", attributes: [NSAttributedString.Key.paragraphStyle: paragraphStyle])

          let parent = self.view!
          parent.addSubview(view)
          view.translatesAutoresizingMaskIntoConstraints = false
          view.heightAnchor.constraint(equalToConstant: 60).isActive = true
          view.centerYAnchor.constraint(equalTo: parent.centerYAnchor, constant: 137).isActive = true
    }
}

1 Ответ

0 голосов
/ 03 октября 2019

Кажется, проблема в этой строке:

self.view = view

Таким образом, вы назначаете только что созданную вами метку для просмотра. Если вы хотите добавить метку к вашему представлению, просто добавьте ее следующим образом:

self.view.addSubview(view)

Я бы также предложил вам переименовать вашу метку для удобства чтения. И нет необходимости создавать родительское представление для добавления вашего ярлыка, если только у вас нет причины, которая не была ясна в этом фрагменте кода. После этих изменений ваш код будет выглядеть так:

import UIKit

class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()

        let view = UILabel()

        view.frame = CGRect(x: 0, y: 0, width: 252, height: 60)
        view.backgroundColor = .white

        view.textColor = UIColor(red: 0.33, green: 0.36, blue: 0.49, alpha: 1)
        view.font = UIFont(name: "OpenSans-Bold", size: 26)
        view.numberOfLines = 0
        view.lineBreakMode = .byWordWrapping
        let paragraphStyle = NSMutableParagraphStyle()
        paragraphStyle.lineSpacing = 0

        // Line height: 30 pt

        view.textAlignment = .center
        view.attributedText = NSMutableAttributedString(string: "Connect with people\nyou love.", attributes: [NSAttributedString.Key.paragraphStyle: paragraphStyle])

        self.view.addSubview(view)

        view.translatesAutoresizingMaskIntoConstraints = false
               view.heightAnchor.constraint(equalToConstant: 60).isActive = true
        view.centerYAnchor.constraint(equalTo: self.view.centerYAnchor, constant: 137).isActive = true
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...