【问题标题】:How to send content of textfields in view B to view A?如何将视图 B 中的文本字段内容发送到视图 A?
【发布时间】:2012-02-11 06:23:02
【问题描述】:

我在UIView A 中创建了一个tableview A,其中tabledatasource 来自A.m 文件中定义的plist 文件。 tableview 中的条目是具有keyAkeyBkeyC 等的字典。

现在我要在UIView A 中创建一个UIButton 和一个新的modalview B。当按下按钮时,modalview B 会弹出。在modalview B中,会有几个UITextfields供用户填写。用户在 textfields 中填写的信息将写入 plist 文件(如上所述),然后重新加载 tableview A 的内容。

我的问题是,用户在modalview B中填写信息。但是tableview A在UIView A中。当我当前在modalview B上使用App时,似乎无法更改tableview A的内容?

如果有办法可以将视图 B 中输入的信息传递给视图 A? 非常感谢。

【问题讨论】:

    标签: iphone objective-c xcode uitableview tableview


    【解决方案1】:

    使用自定义协议 - 这称为委托模式

    //ClassA.h

    @interface : ClassA{
    }
    @end
    

    ClassB.h

    @protocol ClassBDelegate;
    
    @interface :  ClassB{
    
        id <ClassBDelegate> delegate
    }
    
    @property(nonatomic,assign)   id <ClassBDelegate> delegate;
    @end
    @protocol ClassBDelegate <NSObject>
    
    -(void)classB:(ClassB*)bclass param1:(NSString*)p1 param2:(NSString*)p2 param3:(NSString*)p3;
    
    @end
    

    将委托设置为 ClassA - 接收者

    在按钮动作中(在 b 类中) 直接说

    [self.delegate classB:self param1:@"Param1" param2:@"P2" param3:@"p3"];
    

    【讨论】:

      【解决方案2】:

      您通常使用委托模式来实现此行为。查看 Apple 文档中的 iPhoneCoreDataRecipes 示例。特别看类

      • RecipeListTableViewController,你的表视图 A 将在哪里
      • RecipeAddViewController,获取信息的模态视图 B

      【讨论】:

        【解决方案3】:

        我想我误解了你的问题。好的,就像 sanjeev 说的你可以使用代表。或者你可以使用 NSNotification。在视图 A 和视图 B 中添加通知观察者,您正在修改 plist 发布通知。 See This Example

        【讨论】:

        • 你可以使用任何东西来实现你的功能,NSnotification比protocals有点重,我个人觉得Protocal在你的情况下就足够了
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多