如何将数据从Container视图传递到另一个ContainerView,它们位于同一个父视图控制器中?

时间:2014-07-07 08:45:58

标签: ios iphone objective-c xcode uicontainerview

我很难将我的数据从UIContainerView转移到另一个UIContainerView。例如:我有2个容器,分别是calculatorContainerdisplayResultContainer。因此,当我按“=”按钮计算结果时,我希望它显示在displayResultContainer中。我已经尝试了使用segue方法和parentViewController访问权限的不同选项,但仍然没有运气。

4 个答案:

答案 0 :(得分:1)

使用代表。

步骤:

  1. 从第一个UIContainerView,将委托方法调用到父视图控制器。

  2. 然后,父视图控制器将值传递给第二个UIContainerView。

答案 1 :(得分:1)

有两种可能性。 1.使用appDelegate。使用app delegate中的属性在容器之间传递数据。 把它放在第一个容器中

 MyAppdeleagte appDelegate=[[UIApplication sharedApplication]delegate]; 
   appDelegate.dataToPass=dataToPass;

在第二个容器中

MyAppdeleagte appDelegate=[[UIApplication sharedApplication]delegate]; 
   dataToPass=appDelegate.dataToPass;

2.使用ParentViewController。

第一个容器中的

 ParentViewController parent=(ParentViewController *)[self parentViewController];
                      parent.dataToPass=dataToPass;

在第二个容器中

 ParentViewController parent=(ParentViewController *)[self parentViewController];
data=parent.dataToPass;

答案 2 :(得分:0)

这是一个简单的方法,但首先你应该知道这个方法适用于前向流而不是后向(在后向流中你需要一个叫做委托的东西):

View 1 = calculator
View 2 = result display.

在view2中,在NSString文件中获取文本字段和.h

@property(nonatomic,strong) NSString *myResult; //to contain the result
@property(nonatomic,strong) IBOutlet UITextfield *myResultText; // to display the result

在第一个视图(view1)中输入输入并添加按钮,例如(加+)等:

@property(nonatomic,strong) IBOutlet UIButton *addition;

将该插座(按钮)与视图控制器连接。然后为该按钮添加一个方法并将其连接到该按钮:

-(int)addFunc;

然后从您在第一个视图(input1TextFieldinput2TextField)中创建的2个文本字段中获取用户输入:

addFunc内写:

(int)addFunc{
    int input1,input2,result;
    input1 = self.input1TextField.text;
    input2 = self.input2TextField.text;
    result = input1+input2;
    return result;
}

现在在IBaction方法内写:

-(IBAction)myIbaction{
    [self performSegueWithIdentifier @"seguename", sender :self]; // set the segue name and fill it here.
    SecondViewController * sec = [segue destinationViewController];
    int result = [self addFunc];
    sec.myResult = (NSString)result;
}

现在在viewDidLoad方法的第二个视图(view2)中写:

-(void)viewDidLoad{
    self.myResultText = self.myResult;
}

它会显示你的结果。 不知道它是否有帮助,但你肯定会得到这样的图片,这就是你将如何执行它。 希望它有所帮助。

答案 3 :(得分:0)

您必须在第二个UIContainerView

中声明此方法
UIContainerView2
-(id)initWithsetresult:(Int)Result {
   int showPreResult = result;
   return self;
}

按钮操作:

 antagonist = [[UIContainerView2 alloc]initWithsetresult: calculateResult];