毎回、初歩的な質問内容で申し訳ありませんが、困っているので教えて下さい。
「FirstViewController」はUIScrollViewでスクロールさせている画面で、タッチイベントを取得する為に UIScrollView のサブクラスを作っています。
そこでタッチすると、「SecondViewController」へ固定の画面で遷移するようにしたいのですが、「SecondViewController」の画面もそのままスクロール画面で表示されてしまいます。。。
「SecondViewController」をスクロールさせず、位置x=0 y=0で表示させるにはどうしたら良いのでしょうか?
詳しく教えて頂けると、大変助かります。。
↓FirstViewController.h↓
@interface FirstViewController : UIViewController{
MyScrollview *controller;
IBOutlet UIScrollView *scrollView;
}
↓FirstViewController.m↓
- (void)viewDidLoad
{
controller = [[ MyScrollview alloc] initWithFrame:CGRectMake(0, 0, 1100, 1100)];
self.view = controller;
[super viewDidLoad];
[super loadView];
scrollView.contentSize = controller.frame.size;
[scrollView addSubview:controller];
}
↓MyScrollview .h↓
@interface MyScrollview : UIView<UIScrollViewDelegate>{
}
@end
↓MyScrollview .m↓
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent*)event{
SecondViewController *svc;
svc = [[SecondViewController alloc] init];
[self addSubview:[svc view]];
}
No.1ベストアンサー
- 回答日時:
根本的にプログラムの構成を設計し直すことをお勧めします。
iOSでは、Navigation Controllerや、TabBar Controllerを使って、画面遷移することが標準かつ推奨となっています。あなたのプログラムのように、Viewの上にViewを載せてを繰り返すと、むだにメモリを消費するばかりで、効率が悪いばかりでなく、メモリ不足に起因する、重大なエラーを導く危険があります。OSが用意してくれる画面遷移のシステムを使えば、メモリ配分も適切に行ってくれるので、効率的かつ安全ですし、ほかのiOSアプリと同等の使用感をユーザに与えてくれるので、「なにこれ、なんかださいんですけど」と不評を買うことが少なくなります。
Navigation Controllers
file:///Developer/Platforms/iPhoneOS.platform/Developer/Documentation/DocSets/com.apple.adc.documentation.AppleiOS4_3.iOSLibrary.docset/Contents/Resources/Documents/index.html#featuredarticles/ViewControllerPGforiPhoneOS/NavigationControllers/NavigationControllers.html%23//apple_ref/doc/uid/TP40007457-CH103-SW1
なんだかむずかしそうですが、画面遷移のプログラムは、完全にワンパターンでいけますので、一回プログラムを覚えれば、それを単純に繰り返すだけですみます。
さて、あなたのプログラムで、(画面遷移ではなく、単に)インスタンスcontroller(という名前のView)に、子ビュー(subview)として貼り付けた、インスタンスsvc.viewは、親ビューの親ビューであるインスタンスscrollViewの上にあるのですから、いっしょにスクロールするのは、あたりまえといえば、あたりまえです。svc.viewがscrollViewとリプレイスするようなプログラムでないと、ご希望の結果にはなりません。
それと、タップしただけで画面遷移するのは、やっぱりダサイですよ。スワイプ(Swipe)して遷移するようにしないと。なにせ、みんなこれをやりたくで、iPhoneやAndroidを使っているようなものでしょ?
迅速なご回答、ありがとうございます。
「Navigation Controller」でやはり作った方がやはり良いんですね。。
実機テストをするとメモリ不足のエラーメッセージも出ていて実際に困っていました。。
ただ、UIScrollViewだとタップやスワイプといったイベントはやはり、サブクラスで
書かなくてはいけないのでしょうか?それだと、また画面遷移の処理を書くのにまたはまってしまう予感が……
その時はまた質問させて下さい。
まずは、Navigation Controllerで一から作り直してみます!
本当にありがとうございました。
No.2
- 回答日時:
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) セレクトボックスで選択された値をコントローラーで使用したい 2 2022/07/26 16:41
- au(KDDI) 特定の画面を見るとスマホが固まります ご覧頂き有難うございます。 特定のページを見るとスマホが固まり 1 2023/08/21 19:29
- iPhone(アイフォーン) お礼の仕方がわかりません!! iPhoneを使っているのですが、PC表示のやり方もよくわかりません。 2 2023/02/05 16:11
- PHP php 確認表示画面で値をSESSIONから取り出す理由の解釈は正しいでしょうか? 1 2023/06/09 17:39
- ポイントサービス・マイル ポンタポイントの登録の仕方を教えてください 1 2023/01/19 22:56
- 会計ソフト・業務用ソフト Excelの二画面表示でマウスホバーするだけでスクロール 1 2023/02/27 11:00
- iPhone(アイフォーン) 同じ写真と動画をiOSが検出する便利な機能 写真のアルバムタブにて、画面を一番下までスクロールすると 3 2023/01/23 15:41
- マウス・キーボード マウスのないパソコン 9 2022/03/30 10:53
- その他(インターネット接続・インフラ) 電話番号についてわかる方 1 2022/05/30 20:59
- HTML・CSS トリミングで表示した画像をクリックで元どおりにしたい 3 2022/12/16 18:49
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
gcc13.2のバグ?
-
レイノルズ数が4000より大きい...
-
オートマトン: npdaとdpdaの違い
-
selectにline-heightがきかない...
-
oppo reno 7A
-
フォルダーに緑のレ点と赤の✖が...
-
検索ボタンなどに使う虫眼鏡の...
-
WindowsUpdateでウイルスセキュ...
-
Linuxでの開発環境構築や設定の...
-
フリーソフトをうまくダウンロ...
-
オブジェクト指向開発とコンポ...
-
AccessからExcelのVBAを動かしたい
-
pixiaをインストールできないん...
-
ユーザー毎にProgram Files
-
タスクスケジューラでbatがスケ...
-
VScodeでデバッグするときの文...
-
VB.net webアプリケーション 戻...
-
最近のXcodeに必要なスペック
-
[python]スクリプトから起動で...
-
コマンドプロンプト start コマ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
gcc13.2のバグ?
-
レイノルズ数が4000より大きい...
-
MacBookでフルスクリーンを 解...
-
(2)の状態遷移表の書き方がわか...
-
selectにline-heightがきかない...
-
oppo reno 7A
-
フォルダーに緑のレ点と赤の✖が...
-
日本に、Microsoftのような会社...
-
インストールが不要なソフトは...
-
Linuxでの開発環境構築や設定の...
-
特定ユーザに対してのみアプリ...
-
windows10のアプリと機能にyout...
-
回復ドライブに保存されるもの
-
WindowsDefender以外のウイルス...
-
Beckyのアドレス帳を上下に移動...
-
Android studio 初心者 Hello A...
-
ペイント(mspaint.exe)がない...
-
vbsでデバッグしながらコードを...
-
Inkscape プリントマークでエラー
-
VC++にてボタン等のサイズ取得
おすすめ情報