Я хотел бы знать, возможно ли где-то нажать (или сделать что-то еще) внутри UIView, загруженного из файла XIB, и вызвать действие UIView из родительского XIB (например, изменить заголовок UIButton в родительском UIView). Это фрагмент кода интерфейса класса NewsController:
#import <UIKit/UIKit.h>
#import "NewsPage.h"
@interface NewsController : UIViewController {
// Some objects
UIButton *loadButton;
UIView *newsView;
NewsPage *newsPage;
}
@property (nonatomic, retain) IBOutlet UIButton *loadButton;
@property (nonatomic, retain) IBOutlet UIView *newsView;
@property (nonatomic, retain) NewsPage *newsPage;
@end
и это фрагмент реализации класса NewsPage, куда я загружаю дочерний XIB:
- (void)viewDidLoad {
[super viewDidLoad];
// Some code
newsPage = [[NewsPage alloc] initWithNibName:@"NewsPage" bundle:nil];
[newsView addSubview:newsPage.view];
// Some other code
}
Это фрагмент кода внутри интерфейса класса NewsPage:
#import <UIKit/UIKit.h>
#import "NewsController.h"
@interface NewsPage : UIViewController {
NewsController *newsController;
}
@property (nonatomic, retain) IBOutlet NewsController *newsController;
@end
и это фрагмент реализации класса
- (void)tapAction:(UIGestureRecognizer *)gestureRecognizer {
// Some code
NewsController *newsController = [[NewsController alloc] initWithNibName:@"News" bundle:nil];
NSLog(@"Current button title is: %@\n", newsController.loadButton.titleLabel.text);
newsController.loadButton.titleLabel.text = @"New text goes here!";
NSLog(@"Current button title is: %@\n", newsController.loadButton.titleLabel.text);
// Some other code
}
С этим кодом (и после некоторой проводки в IB) я вижу правильный заголовок в отладчике, но симулятор не обновляет изменение заголовка. Я предполагаю, что дочерние UIViews параллельны UIViews родителя, и даже если я делаю что-то вроде этого:
[newsController.loadButton removeFromSuperview]
нет изменений в иерархии UIView родителей, потому что дочерние UIViews «не находятся внутри» родительского UIView. Я надеюсь, что кто-то может помочь с этим, потому что это очень расстраивает. Заранее большое спасибо.