【问题标题】:Why isn't my data being passed through view controllers?为什么我的数据没有通过视图控制器传递?
【发布时间】:2013-08-28 20:51:06
【问题描述】:

我正在尝试将文本字段文本从一个控制器传递到另一个控制器,以便我可以通过电子邮件发送它。我正在关注一个例子,但我必须遗漏一些小细节。基本上,目标是将数据文本字段文本从 enteryournamecontroller 控制器传递到选项控制器的 nsstring。 nsstring 的字符串变量返回 null。

EnterYourNameController.h

 @interface EnterYourNameController : UIViewController{

  UITextField *textField;

  id <EnterYourNameController> delegate;
 }
  @property (strong, nonatomic) NSString *stringEntered;
  @property (strong, nonatomic)  UITextField *textField;
  @property (strong, nonatomic) id delegate; 

EnterYourNameController.m

       -(void)button{
       stringEntered=textField.text;

      ((Options *) (self.delegate)).string = stringEntered;

           UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
Options *vc = [storyboard instantiateViewControllerWithIdentifier:@"Options"];
     [self.navigationController pushViewController:vc animated:YES];

       }

options.h

  @interface Options : UIViewController <MFMailComposeViewControllerDelegate> {

   NSString *string;
   }
   @property (strong,nonatomic) NSString* string;

   @end

option.m

     NSString *emailBody = [NSString stringWithFormat:@"%@",string];

【问题讨论】:

  • 你在哪里调用选项控制器?
  • 这条线是如何工作的? ((Options *) (self.delegate)).string = stringEntered;
  • 我在按钮方法中调用选项控制器。我没有展示它,因为我想让它更干净一点。
  • @Puneet 它基本上使选项中的字符串等于 stringEntered。

标签: ios objective-c string


【解决方案1】:

-(void) button方法中,初始化Options控制器并设置值。

-(void)button{

       stringEntered=textField.text;
       Options *optViewController = [[Options alloc] init];
       optViewController.string = stringEntered;
       //call your optViewController here
  }

【讨论】:

  • 由于某些奇怪的原因仍然无法正常工作。我制作了一个 NSLog 来查看 stringEntered 是否正常工作。
  • 也许是我在控制器之间移动的方式。 UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];选项 *vc = [storyboard instantiateViewControllerWithIdentifier:@"Options"]; [self.navigationController pushViewController:vc 动画:YES];
  • 尝试使用 [self.navigationController pushViewController:optViewController animated:YES];在方法的最后一行。
【解决方案2】:

我希望,当您在视图之间切换时,选项 VC 中的字符串不会存在。所以,你必须像这样保留字符串属性:

-(void)button
{
    Options *optViewController = [[Options alloc] init];
    optViewController.string = [[NSString stringWithString:textField.text] retain];
    //call your optViewController here
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-29
    • 1970-01-01
    • 2015-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多