繁体   English   中英

添加,删除子视图并在子视图和主uiviewcontroller之间进行通信

[英]Add, remove subview and communicate between subview and main uiviewcontroller

我在情节提要中创建了两个uiviewcontrollers。 按下按钮时,我将第二个UIview作为子视图添加到第一个视图。

现在,我的子视图具有完成和取消按钮,触摸该按钮后,必须从主视图中删除该子视图,并且需要将一些数据发送回主视图。 使用委托解决此问题的唯一方法是吗? 请说明是否还有其他更简单或更好的选择。

谢谢 :)

听起来好像问题只在于第一个视图控制器的视图的子视图。 在这种情况下,第一视图控制器可以直接检查所有这些视图。 也就是说,假设您希望在视图之间“传递”的数据是子视图中包含的UITextField的文本。

您有一个子视图的出口,可能是用IB绘制的?

// MyViewController.m
@property(weak, nonatomic) IBOutlet UIView *subview;  // self.view is it's parent

创建一个出口,该出口连接到要从中获取数据的任何子视图:

@property(weak, nonatomic) IBOutlet UITextField *textField;   // probably, subview is it's parent

隐藏并显示“对话”:

self.subview.alpha = 0.0;  // to hide (alpha is better than 'hidden' because it's animatable
self.subview.alpha = 1.0;  // to show

当按下按钮时:

- (IBAction)pressedDoneButton:(id)sender {

     self.subview.alpha = 0.0;

     // or, prettier:
     [UIView animateWithDuration:0.3 animations:^{ self.subview.alpha = 0.0; }];

     // the text field still exists, it's just invisible because it's parent is invisible
    NSLog(@"user pressed done and the text that she entered is %@", self.textField.text);
}

关键是数据不会在视图之间传递。 视图控制器具有指向视图的指针。 一些类似的按钮会生成事件,以使视图控制器做出反应。 其他人则携带视图控制器可以看到的数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM