Я нашел что-то не так в вашем коде.
У вас есть розетка для contentView
. Это означает, что это представление уже добавлено в вашу иерархию представлений. Тогда в вашем commonInit()
addSubview (contentView) 'делать неправильно.
Результат Bundle.main.loadNibNamed("VerificationCodeView", owner: self, options: nil)
не используется.
Вы можете использовать это для загрузки представления из пера:
let verificationCodeView = UINib(nibName: "VerificationCodeView", bundle: nil).instantiate(withOwner: nil, options: nil)[0] as! VerificationCodeView
Если вы хотите получить экземпляр VerificationCodeView
, напишите метод класса, как показано ниже.
class func instantiateFromNib() -> VerificationCodeView {
let verificationCodeView = UINib(nibName: String(describing:self), bundle: nil).instantiate(withOwner: nil, options: nil)[0] as! VerificationCodeView
return verificationCodeView
}
Теперь, когда вам нужно это представление, просто получите его, как показано ниже:
let verificationCodeView = VerificationCodeView.instantiateFromNib()
Добавьте Обработчик Обновлений для своего пункта меню (использующий ON_UPDATE_COMMAND_UI).
Эта строка должна появиться в Вашей карте отображения сообщений:
ON_UPDATE_COMMAND_UI(ID_MYMENUITEM, OnUpdateMyMenuItem)
В обработчике используйте этот код:
void CMainFrame::OnUpdateMyMenuItem(CCmdUI *pCmdUI)
{
if (pCmdUI->m_pMenu!=NULL)
pCmdUI->m_pMenu->DeleteMenu(pCmdUI->m_nID, MF_BYCOMMAND);
}
Или если Вы удаляете единственное использование пункта меню CMenu:: RemoveMenu