我有一个简单的应用程序,我希望通过一个按钮将数据传递给另一个视图控制器而不需要它。所以基本上在一个视图控制器上我有一个文本框,用户在那里输入名称,当他们按下提交按钮时,我希望他们的名字传递到另一个包含标签但没有导航到该视图的视图控制器,留在视图控制器上有提交按钮
这是我提交数据按钮的IBAction:
@IBAction func addPlant(sender: AnyObject)
{
}
答案 0 :(得分:0)
按下提交按钮后,您可以将用户名编辑到所有控制器可以获取的位置,例如UserDefault,SQLit。
#import "ViewController.h"
@interface ViewController ()
//where the user enters name
@property (weak, nonatomic) IBOutlet UITextField *userNameTF;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
}
- (IBAction)submit:(id)sender {
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
/**
* story the userName into NSUserDefaults
*/
[userDefaults setObject:self.userNameTF.text forKey:@"userName"];
//if ios8 need:
[userDefaults synchronize];
}
@end
另一个视图控制器
#import "OtherViewController.h"
@interface OtherViewController ()
@property (weak, nonatomic) IBOutlet UILabel *userNameLabel;
@end
@implementation OtherViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
//get the userName from NSUserDefaults
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
self.userNameLabel.text = [userDefaults objectForKey:@"userName"];
}
@end
Swift Version --------------------------------- 的ViewController:
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var userNameTF: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
@IBAction func addPlant(sender: AnyObject) {
let userDefaults = NSUserDefaults.standardUserDefaults();
/**
* story the userName into NSUserDefaults
*/
userDefaults.setObject(userNameTF.text, forKey:"userName");
//if iOS8 before need:
userDefaults.synchronize();
}
}
OtherViewController:
import UIKit
class OtherViewController: UIViewController {
@IBOutlet weak var userNameLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
let userDefaults = NSUserDefaults.standardUserDefaults();
//get the userName from NSUserDefaults
self.userNameLabel.text = userDefaults.objectForKey("userName") as? String;
}
}
答案 1 :(得分:0)
您可以使用代理来实现这一目标。
你使用的是swift还是objective-c?
创建委托的一般步骤是