菜鸟教程小白 发表于 2022-12-11 22:26:39

ios - 在 NSStrings 中自动保存


                                            <p><p>我有三个文本字段:名字、姓氏和年龄,还有一张照片。我该怎么做才能让信息自动保存,这样我就不必点击按钮了?</p>

<p>这是我的 <code>ViewController.h</code>:</p>

<pre><code>#import &lt;UIKit/UIKit.h&gt;

@interface ContactViewController : UIViewController &lt;UIImagePickerControllerDelegate, UINavigationControllerDelegate&gt; {

    IBOutlet UIImageView *contactImageView;
    IBOutlet UITextField *firstNameTextField;
    IBOutlet UITextField *lastNameTextField;
    IBOutlet UITextField *ageTextField;
}

- (IBAction)save:(id)sender;
- (IBAction)chooseImage:(id)sender;

@end
</code></pre>

<p>这是我的 <code>ViewController.m</code>:</p>

<pre><code>- (void)viewDidLoad {
;

    NSUserDefaults *defaults = ;

    NSString *frontName = ;
    NSString *lastName = ;

    int age = ;
    NSString *ageString = ;

    NSData *imageData = ;
    UIImage *contactImage = ;

    firstNameTextField.text = frontName;
    lastNameTextField.text = lastName;
    ageTextField.text = ageString;
    contactImageView.image = contactImage;
}


- (void)viewDidUnload {

    ;
    contactImageView = nil;
    ;
    firstNameTextField = nil;
    ;
    lastNameTextField = nil;
    ;
    ageTextField = nil;
    ;
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

- (IBAction)save:(id)sender{
    ;
    ;
    ;

    // Create strings and integer to store the text info
    NSString *frontName = ;
    NSString *lastName = ;
    int age = [ integerValue];

    UIImage *contactImage = contactImageView.image;
    NSData *imageData = UIImageJPEGRepresentation(contactImage, 100);


    NSUserDefaults *defaults = ;

    ;
    ;
    ;
    ;

    ;

    NSLog(@&#34;Data saved&#34;);
}

- (IBAction)chooseImage:(id)sender {
    UIImagePickerController *picker = [[ init] autorelease];
    picker.delegate = self;
    picker.allowsEditing = YES;
    picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
    ;
}

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo {
   contactImageView.image = image;

    ;
}


- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {

   ;

}
</code></pre></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>您必须使用 <code><UITextFieldDelegate></code> 协议(protocol)</p>

<p>引用:<a href="http://developer.apple.com/library/ios/#documentation/uikit/reference/UITextFieldDelegate_Protocol/UITextFieldDelegate/UITextFieldDelegate.html" rel="noreferrer noopener nofollow">UITextFieldDelegate Protocol</a> </p>

<p>你必须设置</p>

<pre><code>textField.delegate = yourViewController
</code></pre>

<p>然后可以使用协议(protocol)函数来处理 TextView 的输入和字符更改。</p>

<p>例如你可以使用</p>

<pre><code>- (BOOL)textFieldShouldReturn:(UITextField *)textField
</code></pre>

<p>在用户按下返回按钮时保存文本字段内容 =)</p>

<p>编辑:可能这种方法更适合您的需求 - 我昨天写帖子时有点累=)</p>

<pre><code>- (void)textFieldDidEndEditing:(UITextField *)textField {
    //save your textfied.text string here :)
}
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 在 NSStrings 中自动保存,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/10032088/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/10032088/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 在 NSStrings 中自动保存