由他的孩子更新父母的数据

时间:2016-04-08 11:15:43

标签: ios objective-c

如果标题不是很清楚,我很抱歉,无论如何我会在这里解释。

我有2个文件: SelectPostIt.xib PostIt.xib 。 在我的 main.storyboard 上我有一个 UIButton ,当有人推动它时,它会创建一个新的 SelectPostIt 。这个是不可编辑的。

原则是当我双击selectPostIt时,会出现一个新的PostIt

-(IBAction)doubleTap:(UITapGestureRecognizer *)recognizer {

if(!_isEdited){
    _isEdited = true;

    PostIt *editPostIt = nil;
    NSArray *objects = [[NSBundle mainBundle] loadNibNamed:@"PostIt" owner:self options:nil];

    for (id object in objects)
    {
        if ([object isKindOfClass:[PostIt class]])
        {
            editPostIt = object;
        }
    }

    editPostIt.frame = CGRectMake(10,10, 400, 400);
    [editPostIt setParent:self];
    [self.superview addSubview:editPostIt];
}}

通常情况下,selectPostIt作为新帖子的父级位于[editPostIt setParent:self];,对吗?我已经(在PostIt.m中):

-(void)setParent:(SelectPostIt*)value{
  _parent = value;
}

在我的PostIt.h中使用property(weak, nonatomic) SelectPostIt* parent;

然后,当我双击 PostIt 时,它会消失,但也会改变使用此方法创建他的SelectPostIt的值:

-(IBAction)doubleTap:(UITapGestureRecognizer *)recognizer{

NSString *string = [self.titre text];
//NSLog(@"string: %@", string );
[_parent setTitre:string];

string = [self.commentaire text];
//NSLog(@"string: %@", stringFromTextField );
[_parent setCommentaire:string];

[_parent setIsEdited:true];

if(_parent == NULL)
    NSLog(@"Pas de parents" );
if(_parent == nil)
    NSLog(@"Pas de parents" );

[self removeFromSuperview];
}

我做了一些测试,字符串很好,但 SelectPostIt 的值没有改变(好的一点是 PostIt 至少消失了哈哈)。

所以,如果有人可以帮助我解决我错的地方,那可能会很好,提前谢谢:)

1 个答案:

答案 0 :(得分:0)

这不是确切的答案,但我认为我必须深入研究这一点:

我在 PostIt.m 中添加了:     @synthesize parent;

并改变了:     [parent setIsEdited:true]

To :(这是我的错误)     [parent setIsEdited:false]

现在,我的 PostIt.m 的doubleTap方法如下所示:

-(IBAction)doubleTap:(UITapGestureRecognizer *)recognizer{

NSString *string = [self.titre text];    
[parent setTitre:string];

string = [self.commentaire text];
[parent setCommentaire:string];

[parent setIsEdited:false];
[self removeFromSuperview]; }

从现在开始,当我关闭 editPostIt 时,当我在 selectPostIt 上双击时,会创建一个新的 editPostIt ,而且我没有能够在之前。这意味着 editPostIt 的布尔值已被 editPostIt 的闭包更改。

所以我认为从现在开始,这很好:

-(IBAction)doubleTap:(UITapGestureRecognizer *)recognizer{

NSString *string = [self.titre text];    
[parent setTitre:string]; 

string = [self.commentaire text];
[parent setCommentaire:string];

[parent setIsEdited:false];  
[self removeFromSuperview]; }

但是我需要“重新加载”(?) selectPostIt 或其他东西以便它可以获取新数据?我真的不知道......