2016-03-01 15 views
0

我有一个简单的应用程序,我想通过按钮传递数据到另一个视图控制器没有延续到它。 SO基本上在一个视图控制器上我有一个文本框,用户在那里输入名称,当他们按下提交按钮时,我希望他们的名字传递给另一个包含标签的视图控制器,但不导航到该视图,停留在视图控制器上有提交按钮传递数据到另一个视图控制器与IBAction没有赛格快速

这是我的按钮IBAction为提交数据:按下提交按钮时

@IBAction func addPlant(sender: AnyObject) 
{ 
} 
+2

它不是完全清楚你实际上要做的实现协议。其他视图控制器是否已经存在?也就是说,它在导航控制器的堆叠中还是在分体视图控制器的另一个面板中更高? –

+0

@EricD。这不是重复的,因为它是在将数据传递给正在打开的VC,而不是使用segue来完成。这是关于不打开一个新的VC。 –

+0

@EricD。也许......但仍然有很多假设(例如在创建具有“instantiateViewControllerWithIdentifier”的新视图控制器的情况下(并且可能没有将它保存起来,所以你实际上没有做任何事情)。真的没有足够的信息问题说他真的想要做什么:) –

回答

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 

夫特版------------------------------- - 的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; 

    } 
} 
+0

谢谢你,请问有没有快捷版? – user4682589

+0

好的,我将添加一个快速的顶点 – xiaoyungo

+0

谢谢,我将如何使用userDefaults填充tableviewcell? – user4682589

0

你可以使用代表来实现这一点。

你使用的是swift还是objective-c?

的一般步骤来创建代表们

  1. 创建一个代表团协议(定义了视图想要控制器照顾)
  2. 创建一个类型查看委托性质是委托协议
  3. 使用视图的委托属性来获取/做事不能拥有或控制的
  4. 控制器声明它实现协议
  5. 控制器集自我作为视图的代表通过设置上述
  6. 在#2的属性在Controller
相关问题