1

MainViewController に UIButton があります。
MainViewController には childViewContoller があります。

mainViewController の UIButton (tcButton) プロパティに childViewController からアクセスし、viewDidLoad で setSelected:YES に設定する必要があります。ChildViewController.m ファイルに次のコードがありますが、機能していません。

#import "ChildViewController.h"
#import "MainViewController.h"
#import "CoreData.h"

@interface ChildViewContoller () 
@property (nonatomic, strong) CoreData *coreData;
@property (nonatomic, strong) MainViewController *mainViewController;
@end

@implementation ChildViewController
@synthesize coreData, mainViewController;

-(void)viewDidLoad 
{
    [super viewDidLoad];
    self.managedObjectContext = [(STAppDelegate *)[[UIApplication sharedApplication]  delegate] managedObjectContext];
    [[(mainViewController *)self.parentViewController tcButton] setSelected:YES];
}
4

2 に答える 2

2

あなたのコードはちょっと混乱しています。viewDidLoad で自分自身の新しいインスタンスを作成するのはなぜですか? これは意味がありません。ChildViewController が本当に子ビュー コントローラーである場合、self.parentViewController で親にアクセスできます。viewDidLoad には 1 行だけ必要です。

-(void)viewDidLoad // Line 4
{

    [[(MainViewController *)self.parentViewController tcButton] setSelected:YES]; // Line 8
}
于 2013-02-10T22:18:07.413 に答える
1

コードにはいくつかの問題がありますが、必要なことを実行するための主なアイデアは、mainViewController へのポインターを取得することです。それを行うには多くの方法がありますが、ここではそのようなことを実装する方法の簡単な例を示します。たとえば、ChildViewContoller のイニシャライザでは、ポインタを mainViewController に渡すことができます。

@interface ChildViewContoller ()

@property (nonatomic, strong) MainViewController *mainViewController;

@end

@implementation ChildViewContoller

- (id)initWithMainViewController:(MainViewController *)mainViewController
{
    self = [super init];

    if (self)
    {
        _mainViewController = mainViewController;
    }

    return self;
}

- (void)viewDidLoad
{
    [_mainViewController.tcButton setSelected:YES];
}

@end

上記のコードをテストしていないことに注意してください。

于 2013-02-10T21:13:28.620 に答える