アクションシートからの画面遷移(xcode)
Posted: 2012年4月16日(月) 12:46
グラフィックデザイナーをやっています。
iPhoneアプリXCODEは初心者なのですが
カタログアプリ開発案件が入ったので独学で勉強しています。
下記のところまで開発したのですが、それ以降が手も足も出ない状態です…。
忙しいところ申し訳ありません。ご教授をお願い出来たらとおもいます。
依頼内容が下記と同じ様なアプリです。
http://appliguide.jp/app/detail?id=1763
画像をスクロールできて「商品を見る」ボタンを押すと、その画像ページの商品WEBページを見れる仕様です。
URLは画像商品ページごとに変わる仕様となってます。
これと似た様なオープンソースが下記になります。
https://github.com/mwaterfall/MWPhotoBrowser
このオープンソースのLocal photosを使い上記カタログのようなアプリを作っています。
アクションシートの
■SAVE
■COPY
■Email
■CANCEL
とありますが
SAVE部分を「商品を見る」ボタンに変更
Emailはそのまま
という感じです。
やろうとしているのは
「まず「商品を見る」は、UIWebView を載せた UIViewController を作り、それを表示させる。MWPhotoBrowser.m の 1026行目付近で「Save」ボタンを押した時に savePhotoメソッドを呼ぶ様になっているのでここに用意した UIViewControllerを呼び出す処理を書く。UIViewController はモーダル表示で。」です。
そして1画面ごとに「商品を見る」を押すと、その商品のURLに繋がるようにしたいのですがさっぱりわからずで…
調べたところ、
「ボタンを押したらウェブサイトにつながることを利用して、ボタンにタグをつけます。そしてそのタグが押されたときにたとえばWebViewControllerがよび出されるわけです。そんでもって、WebViewControllerのにアクセサ(@property)を通して、それをNSInger webNumのような感じで書きます(たとえば@property (nonatomic,assign) NSInteger webNum;)。すると、ボタンを押した後にその数字の情報がWebViewControllerにいくので、その数字を使って、あらかじめ使うURLを配列にしておいたものにアクセスする。それを読み出すということです。そうすればWebViewControllerを使い回せます。」
という回答がかえってきました。
モーダル表示部分のコードは下記のようにしたら画面遷移はするのですが画面が真っ暗になってしまいます。
webを表示させるUIViewControllerは下記のように書きました。(フォルダ名はwebViewController)
▼webViewController.h
▼webViewController.m
どのようにコードを書けば、画面真っ暗ではなく表示されるでしょうか?
また各ページで「商品を見る」ボタンを押すごとに、商品WEBページのURLを変えていくことをできるでしょうか?
提出期限の関係で明日、明後日には解決したいとおもっております。
ご教授お願い致します。
iPhoneアプリXCODEは初心者なのですが
カタログアプリ開発案件が入ったので独学で勉強しています。
下記のところまで開発したのですが、それ以降が手も足も出ない状態です…。
忙しいところ申し訳ありません。ご教授をお願い出来たらとおもいます。
依頼内容が下記と同じ様なアプリです。
http://appliguide.jp/app/detail?id=1763
画像をスクロールできて「商品を見る」ボタンを押すと、その画像ページの商品WEBページを見れる仕様です。
URLは画像商品ページごとに変わる仕様となってます。
これと似た様なオープンソースが下記になります。
https://github.com/mwaterfall/MWPhotoBrowser
このオープンソースのLocal photosを使い上記カタログのようなアプリを作っています。
アクションシートの
■SAVE
■COPY
■CANCEL
とありますが
SAVE部分を「商品を見る」ボタンに変更
Emailはそのまま
という感じです。
やろうとしているのは
「まず「商品を見る」は、UIWebView を載せた UIViewController を作り、それを表示させる。MWPhotoBrowser.m の 1026行目付近で「Save」ボタンを押した時に savePhotoメソッドを呼ぶ様になっているのでここに用意した UIViewControllerを呼び出す処理を書く。UIViewController はモーダル表示で。」です。
そして1画面ごとに「商品を見る」を押すと、その商品のURLに繋がるようにしたいのですがさっぱりわからずで…
調べたところ、
「ボタンを押したらウェブサイトにつながることを利用して、ボタンにタグをつけます。そしてそのタグが押されたときにたとえばWebViewControllerがよび出されるわけです。そんでもって、WebViewControllerのにアクセサ(@property)を通して、それをNSInger webNumのような感じで書きます(たとえば@property (nonatomic,assign) NSInteger webNum;)。すると、ボタンを押した後にその数字の情報がWebViewControllerにいくので、その数字を使って、あらかじめ使うURLを配列にしておいたものにアクセスする。それを読み出すということです。そうすればWebViewControllerを使い回せます。」
という回答がかえってきました。
モーダル表示部分のコードは下記のようにしたら画面遷移はするのですが画面が真っ暗になってしまいます。
- (void)actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex {
if (actionSheet == _actionsSheet) {
// Actions
self.actionsSheet = nil;
if (buttonIndex != actionSheet.cancelButtonIndex) {
if (buttonIndex == actionSheet.firstOtherButtonIndex) {
webViewController* web = [[webViewController alloc] init];
web.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
UINavigationController *NavigationController =
[[UINavigationController alloc] initWithRootViewController:web];
[self presentModalViewController:NavigationController animated:YES];
webを表示させるUIViewControllerは下記のように書きました。(フォルダ名はwebViewController)
▼webViewController.h
#import <UIKit/UIKit.h>
@interface webViewController : UIViewController{
}
@property (retain, nonatomic) IBOutlet UIWebView *web;
@end
▼webViewController.m
#import "webViewController.h"
@implementation webViewController
@synthesize web;
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)didReceiveMemoryWarning
{
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
#pragma mark - View lifecycle
- (void)viewDidLoad
{
[super viewDidLoad];
NSURL *url = [NSURL URLWithString:@"https://www.google.co.jp/"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[self.web loadRequest:request];
// Do any additional setup after loading the view from its nib.
}
- (void)viewDidUnload
{
[self setWeb:nil];
[super viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
- (void)dealloc {
[web release];
[super dealloc];
}
- (void)webViewDidStartLoad:(UIWebView *)webView{
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
}
- (void)webViewDidFinishLoad:(UIWebView *)webView{
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
}
#pragma mark 初期処理
@end
どのようにコードを書けば、画面真っ暗ではなく表示されるでしょうか?
また各ページで「商品を見る」ボタンを押すごとに、商品WEBページのURLを変えていくことをできるでしょうか?
提出期限の関係で明日、明後日には解決したいとおもっております。
ご教授お願い致します。