2011-03-26 14 views
1

私はこれは私はそれが動作するように取得しようとしてきたコードであり、UIButtonは、「ボタン」と呼ばれた私が作成したビューコントローラ(MyViewController)で働いています:スーパービューでinitメソッドを呼び出すと、このUIButtonが初期化されないのはなぜですか?

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section { 
MyViewController *myViewController=[[[MyViewController alloc] init] autorelease]; 
[myViewController.button addTarget:self action:@selector(action) forControlEvents:UIControlEventTouchUpInside]; 
return footerController.view; 
} 

私は」それと間違って何よく分からないが、私はこれを行う場合は明らかに、私はそれを修正することができます:この出来事はなぜ

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section { 
MyViewController *myViewController=[[[MyViewController alloc] init] autorelease]; 
[myViewController.view addSubview:nil]; 
[myViewController.button addTarget:self action:@selector(action) forControlEvents:UIControlEventTouchUpInside]; 
return footerController.view; 
} 

誰かが私に教えていただけますか?

答えて

0

viewプロパティがアクセスされていることが示されているので、メモリを節約するために必要とされるまで、nibはロードされません。可能であれば、MyViewControllerのviewDidLoadメソッドでそのような初期化を行う方がよいでしょう。

0

Anomieが言ったのは正しいです..私はその周りに道を見つけました。代わりにmyViewController.buttonでボタンに直接アクセスすることはできません。代わりに、方法:[myViewController.view viewWithTag:buttonTag]を使用する必要があります。そのようにして、ボタンが既に初期化されていることを確認しています。

関連する問題