0

ばかげているように聞こえるかもしれませんが、読んでください...

ストーリーボードによってインスタンス化された のUILabel外部からのテキストを設定したいと考えています。UIViewControllerテキストを設定するときにView Controllerのラベルプロパティが設定されていることを確認する必要があります。そうしないと、ラベルのテキストが設定されません(テキスト値を受け取るためにまだロードされないため)。

これが私の現在の解決策です:

// Show pin entry
if (!self.pinViewController) {
    // Load pin view controller
    self.pinViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"pinScreen"];
    self.pinViewController.delegate = self;
    if (!self.pinViewController.view) {
        // Wait for pin screen to fully load
    }
    [self.pinViewController setMessageText:@"Set a pin for this device"];
}

最初は、の値が notにwhileなるまでループするループがありましたが、ビューをチェックするというまさにその行為がそれをロードしているようです(ここで述べたように: http://developer.apple.com/library/ios/documentation/UIKit/Reference /UIViewController_Class/Reference/Reference.html#//apple_ref/doc/uid/TP40006926-CH3-SW37 )viewnil

この方法を試してみましたisViewLoadedが、成功しませんでした。それはただ永遠にループしました。

上記のコードを現在の解決策として進めましたが、それは間違っていると感じています。

がロードされたことを確認するより良い方法はありUIViewますか?

4

3 に答える 3

2

ビューの可用性に依存する必要がない別の方法を提案したいと思います。
ViewController で他のメソッドを呼び出す前にビューが読み込まれるのを待つ必要がある場合は、PinViewController を呼び出す viewController が PinViewController の内部動作を認識している必要があるため、カプセル化を解除します。通常、それは良い考えではありません。

ただし、NSStrings のようなオブジェクトを PinViewController インスタンスに保存することもできます。PinViewController のビューが表示されたら、以前に設定したプロパティに従ってビューを設定します。
viewController の外からラベルのテキストを変更する必要がある場合は、label.text を設定するカスタム セッターを作成することもできます。

あなたの.h

@interface PinViewController : UIViewController
@property (copy, nonatomic) NSString *messageText;
// ...
@end

そしてあなたの.m

@implementation PinViewController

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    self.messageLabel.text = self.messageText;
}

// optional, if you want to change the message text from another viewController:
- (void)setMessageText:(NSString *)messageText {
    _messageText = messageText;
    self.messageLabel.text = messageText;
}

// ...

@end
于 2013-07-04T01:40:51.073 に答える
0

viewDidLoadこれを解決する必要があります。

http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIViewController_Class/Reference/Reference.html

于 2013-07-04T01:41:34.513 に答える