14/12/17 13:42:49.52 qlyH8juk0
>>21 試しましたが無理でした。
CustomViewControllerのアラートにて入力された後に、
userDefaultsに値を保存して、
ViewController.mのupdateZoomが呼び出されるようにしました。
(maximumZoomScaleをあらかじめ1と設定しています)
-(void) updateZoom
{
_userDefaults = [NSUserDefaults standardUserDefaults];
NSLog(@"userdefaults = %f",[_userDefaults stringForKey:@"ZoomScale"].floatValue);
//ここでuserdefaults = 2
self.scroller.maximumZoomScale = [_userDefault stringForKey:@"ZoomScale"].floatValue;
NSLog(@"self.scroller.maximumZoomScale = %f",self.scroller.maximumZoomScale);
//ここでmaximumZoomScale = 2
}
この時点では反映されていないのですが、IBActionにて変更すると反映されています。
- (IBAction)test:(id)sender
{
_userDefaults = [NSUserDefaults standardUserDefaults];
NSLog(@"userdefaults = %f",[_userDefaults stringForKey:@"ZoomScale"].floatValue);
//ここでuserdefaults = 2
NSLog(@"self.scroller.maximumZoomScale = %f",self.scroller.maximumZoomScale);
//ここで何故かmaximumZoomScale = 1
self.scroller.maximumZoomScale = [_userDefaults stringForKey:@"ZoomScale"].floatValue;
NSLog(@"self.scroller.maximumZoomScale = %f",self.scroller.maximumZoomScale);
//ここでmaximumZoomSclae=2となっています。
updateZoomメソッドで反映されてるように見えるのですがIBActionのところで最初の値が1になっているのは何故でしょうか?
IBActionとインスタンスメソッドで挙動が違うことが前にもありました。何か根本的に間違えてそうなのですが…
24:名称未設定
14/12/17 14:01:03.90 cWZN5E8H0
>>22
ああ、なるほど。謎のviewDidLoadでのViewControllerの生成(だけ)はそういうことか
>>23
とりあえず、Alertで入力してーのalertView:didDismissWithButtonIndex:でmaximumZoomScaleを設定で全く問題ない
>>22の言うことを聞きなさい
25:名称未設定
14/12/17 14:12:37.02 qlyH8juk0
同じクラスの違うオブジェクトが生成されているのはわかったのですが…
他のクラスにあるオブジェクトにアクセスする方法がわからないです…
検索ワードだけでも教えていただけないでしょうか…
基本から勉強やり直します。
ありがとうございます
26:名称未設定
14/12/17 14:43:40.66 5GQaxrID0
例えば CustomViewController に target というプロパティを設けて、
事前に表示されている ViewController のオブジェクトをセットしておいて、
-(void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex{
NSString *textValue = [[alertView textFieldAtIndex:0]text];
self.target.scroller.maximumZoomScale = textValue.floatValue;
}
という風にする等。
どうやって事前にセットしておくのかは、画面に表示される
それぞれの View Controller がいつどうやって生成されるのかに
よって違ってくるので一概には言えません。
ストーリボードで作っているなら IBOutlet にしておいて
New Referencing outlet で ViewController から引っ張ってセットできるのかな。
27:名称未設定
14/12/17 15:02:01.70 qlyH8juk0
storyboardのuiscrollviewからnew referencing outletから、CustomViewControllerに接続しようとしても何も表示されず行えないです。(Control押しながらcustomviewcontroller.hに引っ張ってもできない。)
すでにスクロールビューはviewControllerに接続していて、customviewcontrollerは、UITableControllerです。
28:11
14/12/17 15:23:17.05 TC5I0KDT0
最新バージョンで試したのですが、やはり同様の現象が発生します。
>>11で書いた方法でAVAudioPlayerを10回再生すると、AVAudioPlayerは-10、_NSThreadPerformInfoは10の値になります。
URLリンク(github.com)
ここを見るとdeallocをオーバーライドしているようですが、内部で特殊な書式を使って、
NSObjectのdeallocを呼ばずに解放しているということなんでしょうか。
どうにも気になりますので、詳しい方いましたらお教えください。
29:名称未設定
14/12/17 16:29:33.24 cWZN5E8H0
そんなに気になるなら、NSThreadPerformInfoをMRCで捕まえて、本当はリリースした後であろうまたのその後にreleaseしてみればいいんじゃね?
内部でどう特殊なことなんてオープンソースじゃないしわかるわけないやん。しかもプライベートクラスなんて
30:名称未設定
14/12/17 16:51:41.63 qlyH8juk0
>>24
ViewControllerの生成だけ?というのはどういう意味なんでしょうか?
カスタムビューコントローラーからviewcontrollerのscrollerのプロパティを設定する方法を教えてください!
31:名称未設定
14/12/17 17:01:26.66 cWZN5E8H0
-(void)viewDidLoad{
_vc = [[ViewController alloc]init];
}
だけなので
他でちゃんとやっているのだろうと思ったが>>22と言われて、そのまんまなのだな&だったら言っている変なことになるのも全くその通りと
CustomViewControllerとViewControllerの関係性とかわからいのでただ教えてくださいと言われてもわかりません
そもそもCustomViewControllerって何の目的なのかもわからないし。いらないんじゃね?というw
32:名称未設定
14/12/17 17:08:23.63 lOkRdvJg0
>>30
viewControllerとcustomViewControllerのそれぞれの役割は何?分ける必要あるの?
基本がボロボロだけど何を参考に作ってるのかな。
33:名称未設定
14/12/17 17:09:17.51 qlyH8juk0
このやり方だとViewControllerクラスのオブジェクトが別々にできているのですよね?
元のオブジェクトをいじる方法が知りたいのです
カスタムビューコントローラーは、設定画面でユーザーが入力したズームスケールに変更したいのです。
34:名称未設定
14/12/17 17:20:48.41 cWZN5E8H0
ViewControllerからCustomViewControllerを
modalしているなら、self.presentedViewController (presentingViewControllerだったかな?w)
pushしているなら、self.navigationController.viewControllers中
に_vcってしたかったのが入っているだろ
35:名称未設定
14/12/17 17:47:45.08 t82EDXSN0
>>28
AVAudioPlayerはシミュレータでは起動しただけで16Bytesリークするが、実機ではしないな。
メインスレッドで-play呼んでるの? 何バイトリークするの?
36:名称未設定
14/12/17 22:58:17.13 qlyH8juk0
>>34
-(IBAction)configButton:(id)sender
{
[self performSegueWithIdentifier:@"Config" sender:self]
}
このようにして繊維しています
この場合どうやって元のビューを参照するのでしょうか
37:名称未設定
14/12/17 23:42:11.39 cWZN5E8H0
そんなもん出されてもわかりません。とりあえずmodalということにしとこう
CustomViewControllerのviewWillAppear:で
NSLog(@"%@", self.presentingViewController);
ってしてみ。あとはわかるでしょ?
てか、ドキュメントを見れよ。ドキュメントを見ても勘所とかわからないんだったら、なんか本買って買って基礎をちゃんと勉強しなさいな
そういうレベルですよ
38:名称未設定
14/12/17 23:44:56.68 GiutDLOQ0
データ受け渡しするときは、segue じゃなくて、push で遷移した方がいい。
// 移動元の ViewController.m とかに下記のように書けばいいよ。
// 移動先のビューコントローラのインスタンス作成
MYDetailViewController *subVC
= [sb instantiateViewControllerWithIdentifier:@"detailviewcontroller"];
// 移動先で表示するデータの引き渡し。
// MYDetailViewController.h に受け取り用の プロパティを作っとく
subVC.bairitu = bairituStr;
[[self navigationController] pushViewController:subVC animated:YES];
後は、subVCで受け取った bairitu を煮るなり焼くなりすればいい。
39:名称未設定
14/12/17 23:45:14.71 9vdxDtVF0
こんな算数でいう足し算もわかってないようなやつに教えるの大変だなぁ
40:名称未設定
14/12/17 23:57:15.80 cWZN5E8H0
>>36
ああ、面倒だから、答えそのものを(modalの場合だが)
((ViewController *) self.presentingViewController).scroller.maximumZoomScale = textValue.floatValue;
ってすればいいよ。他になにかしでかしているのかわからないのでどうかなとも思うけど
ちゃんと基礎を勉強してね
本を買って買った買いまくってでも。Webでもいいんだろうけど、どんなレベルか想像を超えているので自分で探して探して探しまくってみよう
41:名称未設定
14/12/18 01:32:07.77 8L0TRU+u0
>>36
こうこな
//画面遷移時に呼ばれるメソッド
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
//次の画面にパラメータを渡して遷移
if ([segue.identifier isEqualToString:@"Config"]) {
//ここでパラメータを渡す
SecondViewController *secondViewController = segue.destinationViewController;
secondViewController.arguments = _arguments;
}
}
42:名称未設定
14/12/18 03:41:43.68 fsi3onNz0
>>18
_vc = [[ViewController alloc]init];
これやってる時点で、どう教えていいか困るレベル。
43:名称未設定
14/12/18 06:11:29.68 I0SVjW5n0
皆さんありがとうございます
ObjectiveCの入門書は一冊やったのですが…
プログラムは全く経験がなく右も左も分からない状態で自分がどんな間違いをしていて、どんな勉強をすればいいかもわからなくて…
今日、詳解objectiveC第3版を購入したので詳しく勉強してきます。
すごく丁寧に答えて頂きありがとうございました。