2009-06-27 14 views
4

iPhone SDK 3.0をインストールしたところ、UITableViewCellのtextプロパティが使用されなくなったため、代わりにtextLabel.textを使用する必要があります。これは、現在のシステムのバージョンを知り、対応するメソッドを呼び出さなければならないということですか?このような。iPhone SDK 3.0対。 2.2.1

UITableViewCell *cell = ...; 
if ([[[UIDevice currentDevice] systemVersion] isEqualToString:@"3.0"]) { 
    cell.textLabel.text = @"..."; 
} else { 
    cell.text = @"..."; 
} 

もしそうなら、それは非常に面倒です。

答えて

3

3.0用にビルドして、もう2.2については心配しないでください。主要なOSのアップグレードとは異なり、人々は非常に迅速に新しいバージョンのiPhone OSにアップグレードしています。 TapBotsのブログiPhone 3.0 Adoption Rateでこの記事をチェックしてください。

あなたのアプリが承認されるまでに(今から2週間後には?)ほとんど誰も2.2をもう使用しません!代わりに、OSのバージョンをチェックするセルが新しいプロパティを持っている場合、あなたは確認することができ

+0

これは普遍的なアプリケーションをdevlopするために使用できますhttp://cocoabugs.blogspot.com/2010/09/utility-method-to-know-ios4-installed.html –

1

2.2または2.2.1のように、3.0 SDKを使用して、古いバージョンをプロジェクトで使用できます。

これを行うには、Base SDKを3.0に設定しますが、iPhone OS展開ターゲットの設定を変更します。プロジェクトの情報を取得すると、両方の設定にアクセスできます。

0

実際には、プロジェクトをビルドするときに、対象のファームウェア(pgbなど)を選択するので、これを行う必要はありません。次に、#ifdefディレクティブを使用するだけです。ここではより多くの情報がある:iPhone check firmware version Aはるかに徹底した答えはここに掲載されていますHow to target a specific iPhone version?

EDITUIDevice Docs:私はsystemVersionが実際に文字列、ソースであることを認識した後、いくつかのテキストを削除します。

あなたのプロジェクト全体でさまざまなファイルでそれを使用する場合、あなたは多分あなたのappdelegateにプロパティとして追加することによって、それを整理することができ、それらはこのような何かやって値を取得する:

MyAppDelegate *theDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate]; 
NSString *version = theDelegate.version; 

をしかし、それはバージョン番号ほどシンプルなもののために複雑すぎるかもしれません。

4

if ([cell respondsToSelector:@selector(textLabel)]) { 
    // Do it the 3.0 way 
    cell.textLabel.text = @"..."; 
} else { 
    // Do it the 2.2 way, but avoid deprecation warning 
    [cell performSelector:@selector(setText:) withObject:@"..."]; 
} 
1

それは非推奨となり、彼らは新しい方法を提案しますが、あなたが望むなら、あなたは確かにまだ2.2の方法を使用することができます3.0で動作するアプリに悪影響を及ぼすことはありません。あなたがまだ2.2上のユーザーについて心配しているならば、提供されているリンクベンを確かにチェックしてください。あなたが3.0のためにコンパイルするなら、それは大きな問題になるとは思わない。

0

今のところ2.2を使用する場合は、必ず3.0でシミュレータでテストしてください。特にテーブルでは、2.2と3.0の間に奇妙な動作上の違いが見られました。

関連する問題