0

タイトルがあいまいに見えたらごめんなさい。

viewDidLayoutSubviewsクラスのメソッド内から関数 checkLogin を呼び出しています。メソッドのコードは次のとおりです。

KeychainItemWrapper *keychain = [[KeychainItemWrapper alloc] initWithIdentifier:@"UserLogin" accessGroup:nil];
NSString *activeUser = [keychain objectForKey:(id)kSecAttrAccount];
int length = [activeUser length];
NSLog(@"%d", length);

if (length > 0) {
    NSLog(@"Greater than 0");
    [testLabel setHidden:FALSE];
    [testLabel setText:@"Currently logged in"];
    /*

     To fix this, create a new button?

     */
    [loginButton setTitle:@"Log Out" forState:UIControlStateNormal];
} else {
    NSLog(@"Less than 0");
    [testLabel setHidden:TRUE];
    [loginButton setTitle:@"Log In" forState:UIControlStateNormal];
    //[loginButton setTitle:@"Log In" forState:UIControlStateHighlighted];
}
// Logout [keychain resetKeychainItem];

テキストのタイトルを変更しようとすると、プログラムがクラッシュし、その理由がわかりません。誰でもこれで私を助けることができますか?

私が得るエラーは

*** Assertion failure in -[UIView layoutSublayersOfLayer:], /SourceCache/UIKit/UIKit-2380.17/UIView.m:5781\ 2013-03-20 16:24:55.751 CompAir[5321:907] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Auto Layout still required after sending -viewDidLayoutSubviews to the view controller. FirstViewController's implementation needs to send
-layoutSubviews to the view to invoke auto layout.'}
4

1 に答える 1

0

さて、私は今問題を修正することができました。私は、何らかの理由で、他のボタンには存在しなかったログインボタンの幅に追加の制約がありました(したがって、それらが機能した理由)。これらの制約を取り除いた後、問題は解決しました。

于 2013-03-20T16:56:35.557 に答える