がるの健忘録 このページをアンテナに追加 RSSフィード

2009-10-13

[][]あいふぉんあぷりのちっぷすとかなうりっぢとか

memoと呼ぶのすら烏滸がましいような物体。

後でまとめますんで orz

書きためてたけどこのタイミングで消えるとめっさブルーなので、とりあえず第一陣あっぷ。


// viewセットを切り替える;画面遷移

(UIWindow *)window->addSubview(view *v)

// viewインスタンスの取得方法例

(view *v)v = (UIViewController *)obj->view();
(view *v)v = (UINavigationController *)obj->view();

Navigationについて。

viewインスタンスLIFOでしまい込んで画面遷移、って発想はおもころいかも。


//

view作ってcontrollerの継承にして

Cocoa touch class -> UIVewController subclassを作成

MainWindow.xilをclickしてNavigationControll内のTop controllerをクリック、Inspectorの一番右、classを「UIVewController subclassを作成」で作ったクラス名に割り当てる

…何に使うか今ひとつわからんが。いやわかった。

「対象のview(Window)の処理はこのサブクラスの中にしか書けない;特にAction系の処理」ってことだ。

んで。例えば一つの遷移例。…戻る処理は書かなくてもよいっぽ。すげぇなぁ。

-(IBAction)actionNavigate:(id)sender {
	UIViewController *tController = [[UIViewController alloc] initWithNibName:@"nextPage" bundle:[NSBundle mainBundle]];
	
	NSLog(@"clicked !!");
	
	if (nil != tController) {
		[[self navigationController] pushViewController:tController animated:YES];
		[tController release];
	}
}

@"nextPage" ンところには、必要なお名前を。

珍しくちゃんと「作ったファイル名と対比させるしかない」という安心設計。


// デバッグ向け

NSLog()
%@
%d

//

tableの出力

1.UITableViewControllerの継承クラスを作る

2.init、またはinitWithStyle(今回はこっち)で、腹に「出力するデータ一式」抱え込むと楽

3.おそらく「rowの数」を規定してると予測されるメソッド。magic numberはやめておきませう。managerってのは、今回、データを総括でもってるインスタンス。array系。

// Customize the number of rows in the table view.
 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return [manager countOfData];
 }

4.1cellごとにcallされると思われるメソッド。1行の処理はまぁここで。

// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *CellIdentifier = @"Cell";
    
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }
    
    // Set up the cell...
    cell.textLabel.text = [[manager loadAtIndex:indexPath.row] name];

    return cell;
}

ぶっちゃけ。「Set up the cell...」直前まではすでに書かれているので、その後ろを書くだけ。

画像ならimageView。インスタンスなので、例えばこんな感じのが雑で便利だよね。

UIImageView *obj = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"hogeramugera.png"]];

UITableViewControllerはUIViewControllと同格(継承クラス)なので。

画面遷移先がtable、って感じなら、普通にNavigationにぶちこめば無問題

いわゆる一つのonClickイベントは

didSelectRowAtIndexPath

で取得。引数のindexPathに行数が入る感じ。


URIによる移動遷移。

例えば「狩猟を目的とした遠征」なブラウザで動かすならこんなげ。

NSURL *url = [NSURL URLWithString:@"http://d.hatena.ne.jp/gallu/"];
[[UIApplication sharedApplication] openURL:url];

また。

こちら( http://7kamura.blogspot.com/2009/09/iphoneopenurl.html )には、少々色々と別件が載っている。

メールアプリとの連携

    UIApplication *app = [UIApplication sharedApplication];
    NSString *to = @"to@test.jp"
    NSString *cc = @"cc@test.jp"
    NSString *bcc = @bcc@test.jp"
    NSString *subject = [[NSString stringWithFormat:@"テスト" stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    NSString *body = [[NSString stringWithFormat:@"テスト
    送信
    です。"] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    NSString *str = [NSString stringWithFormat:@"mailto:%@?cc=%@&bcc=%@&subject=%@&body=%@",to, cc, bcc, subject, body];
    [app openURL:[NSURL URLWithString:str]];

Phoneコールとの連携

    UIApplication *app = [UIApplication sharedApplicatoin];
    [app openURL:[NSURL URLWithString:@"tel:X-XXX-XXX-XXXX"]];
    // すぐ電話がかかるので注意

SMSとの連携

    UIApplication *app = [UIApplication sharedApplication];
    [app openURL:[NSURL URLWithString:@"sms:X-XXX-XXX-XXXX"]];

YouTubeとの連携

    UIApplication *app = [UIApplication sharedApplication];
    [app openURL:[NSURL URLWithString:@"http://www.youtube.com/v/ZGvfW2alYiA"]];

AppStoreのとの連携

    UIApplication *app = [UIAppliaction sharedApplication];
    [app openURL:[NSURL URLWithString:@"http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=301175384&mt=8"]];

2009-04-06

[][]うわ微妙…

んと。ちとお仕事でiPhoneアプリケーションの作成が入りまして。

自分なりにノウリッジを蓄積しようと考えて「iPhoneアプリケーション」タブも作成していたのですが。


その前に。


iPhoneアプリケーションデベロッパは支払いの遅れとカスタマサービスの無能ぶりにいらいら

http://jp.techcrunch.com/archives/20090324iphone-app-developers-gripe-about-payment-delays-and-dismal-customer-service/

iPhoneアプリケーションデベロッパは決められた日にAppleから支払いを受けているのだろうか? そうでない人もいるようだ。このiPhone デベロッパフォーラムには、1月の支払いをまだもらっていないとか、もらったけど売り上げに比較して金額が足りないといった苦情のスレッドがいくつもある。本誌に直接、苦情を投稿してきたiPhoneアプリケーションデベロッパも、Appleからの1月ぶんの支払いが遅れていると言っている。この記事の下のほうに埋め込んだAppleの契約書は、月末締めの45日後払いと明記している。ということは、すでに1週間は遅れていることになるね。


AppleiPhoneアプリケーションの返金制度はデベロッパを破産させる

http://jp.techcrunch.com/archives/20090325apples-iphone-app-refund-policies-could-bankrupt-developers/

iPhoneのユーザがアプリケーションを(Appleの制度では90日以内に)‘返品’したら、デベロッパは売り上げから得た金額を返金しなければならないようだ。しかしここに落とし穴がある。Appleは全額をユーザに返金するが、手数料(売り上げマージン)は取るというのだ。だからデベロッパは売り上げから得たお金を返すだけでなく、Appleに手数料を払わなければならない。App Storeで売れた金額の30%がAppleの手数料だ。だからデベロッパの取り分は70%だが、ユーザに返金する場合はデベロッパは、Appleに売り上げの100%を返金しなければならない。

-中略-

本誌が話を聞いたデベロッパは、返金を受け取ったユーザはそのアプリケーションを使えなくなるはずだが、実際のところどうなるのかよく分からない、と言った。しかも、契約書のこの部分は後から加わったもので、デベロッパが次世代のApp StoreiPhone OS 3.0の公式リリース後)でアプリケーションを売りたいならこれにサインしなければならない。でも、もう1人のiPhoneデベロッパから見せてもらった契約書には、12月の時点ですでにその条項がある。

えと………ちょっとお殿様商売が強すぎるような………

結構、なんだかんだiPhoneアプリケーションって増えるかなぁとは思ってたのですが…これをみると、まず作成業者が逃げ始めるんじゃないですかねぇ? 大企業は多分「個別に特殊な契約で優遇されている」可能性も否定できませんが。


全方位に玉なサービスというものは、なかなかないものですねぇ。