【问题标题】:Pass a value from a UIView to UIViewController将值从 UIView 传递给 UIViewController
【发布时间】:2011-06-13 14:35:40
【问题描述】:

情况:在主视图控制器中,我有一个 UIScrollView,其中我有一个 UIView 一切正常(视图控制器 > UIScrollView > UIView)。

//In the main view controller...
- (void)viewDidLoad {
     UIView *subview1 = [[UIView alloc] initWithFrame:rect1]; //create a UIView
     [self.scrollView addSubview:subview1]; //add it to UIScrollView
}

问题:如何将字符串从该 UIView 传递回我的主视图控制器?

【问题讨论】:

    标签: iphone uiview uiviewcontroller uiscrollview


    【解决方案1】:

    常见的解决方案是委托。您创建一个自定义的 UIView 子类,它知道如何向感兴趣的人报告信息:

    @interface MyView : UIView {}
    @property(assign) id delegate;
    @end
    
    @implementation MyView
    
    - (void) somethingHappened
    {
        [delegate stringDidChange:newStringValue];
    }
    
    @end
    
    @implementation MyController
    
    - (void) viewDidLoad
    {
        MyView *subview = …;
        [subview setDelegate:self];
    }
    
    - (void) stringDidChange: (NSString*) newStringValue
    {
        NSLog(@"New string value reported from the view: %@.", newStringValue);
    }
    
    @end
    

    如果您愿意,您可以为委托创建一个协议,以便编译器可以为您检查更多内容。请注意,委托是一个分配的属性,不是保留的,因为保留的属性会导致 retain cycle

    也可以使用通知、KVO 或块来解决问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多