将值从UIView传递给UIViewController

时间:2011-06-13 14:35:40

标签: iphone uiview uiviewcontroller uiscrollview

情况:在主视图控制器中,我有一个UIScrollView,其中我有一个UIView一切正常(View Controller> 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中的字符串传递回主视图控制器?

1 个答案:

答案 0 :(得分:4)

常见的解决方案是授权。您可以创建一个自定义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或阻止也可以解决问题。