問題タブ [cs193p]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
objective-c - UIViewController が prepareForSegue で認識されないセレクタ例外をスローする
私は、スタンフォード CS193p iOS プログラミングの講義に沿って進めようとしています。「Happiness」と呼ばれるデモ プログラムの 1 つは、「PsychViewController」と「HappinessViewController」の 2 つの UIViewController を作成します。ターゲット アクション メソッドを使用して、PsychViewController から HappinessViewController にセグエします。
次のコードは、この例外をスローし続けます: "-[UIViewController setHappiness:]: 認識されないセレクターがインスタンスに送信されました"
問題のあるコードは次のとおりです。
このサイトや他のサイトを検索しましたが、通常、このエラーが発生するのは、汎用の UIViewController が、プログラムで使用される特定のビュー コントローラー オブジェクト (この場合は「HappinessViewController」) に正しく設定されていないためです。しかし、IB の ID インスペクターを使用して汎用 UIViewController を HappinessViewController に設定しましたが、まだ例外が発生しています。誰かがそれを助けることができれば、私は髪を引き裂いています。
ios - Paul Hegarty が NSFetchedResultsController @properties を変更しないように言っているのはなぜですか?
概要:
スタンフォード iOS チュートリアルには、コア データを使用しながらテーブル ビューを使用するのに役立つ実装 (ヘッダー + 実装ファイル) が含まれています。
リンク- http://www.stanford.edu/class/cs193p/cgi-bin/drupal/downloads-2011-fall
ファイル名- CoreDataTableViewController.zip
CoreDataTableViewController.h
には、次のテキストが含まれています。
// 一度 NSFetchedResultsController を作成すると、その @propertys を変更できないことに注意してください。新しいフェッチ パラメータ (述語、並べ替えなど) が必要な場合は、新しい NSFetchedResultsController を作成し、このクラスの fetchedResultsController @property を再度設定します。
質問
ドキュメントでは、プロパティを変更したときの状況について言及されており、この場合は何かを推奨しているため、少し奇妙に聞こえます...間違いのように見えるか、何かを見落としています。述語を変更して再度フェッチすると、すべてが機能します...
objective-c - Objective C:UIに影響を与えないスレッドをダウンロードすることは可能ですか?
私はItunesUのStandfordコースで作業していますが、何かをダウンロードするためのスレッドはUIに何の影響も与えないはずであり、これはメインスレッドでのみ発生するはずだと言われています。
さて、私の例では、フリッカーから画像をダウンロードしていて、この画像を(セグエを介して)で設定したいと思いますUIScrollView
。したがって、この画像を「サイド」スレッドでダウンロードしている間、画像のプロパティUIScrollview
を画像などに設定しています。ただし、画像サイズがまだわからないため、これは明らかに機能しません。その画像オブジェクトへの参照はまだ正しく設定されていませんか?
では、それをどのように処理しますか?私は明確であることを願っています..ここに私の例があります:
と私のPhotoViewer:
computer-science - 新しい XCode は、スタンフォード CS 193P に問題があることを証明しています
私はスタンフォード大学の 2011 年から CS 193P コースに取り組んでいますが、コードの多くが機能していません。新しい XCode に更新したとき、私がプログラムしたボタン セグエはどれも機能せず、今日スクロール ビューを実装しようとしてもうまくいきませんでした。古い XCode に戻す方法や、少なくともレッスンに従うことができるように知っておくべき回避策はありますか?
ios - iOS(cs193p):向きの変更時にUISplitViewControllerDelegateデリゲートメソッドが呼び出されないのはなぜですか?
私はiTunesで素晴らしいスタンフォードcs193pコースをフォローしていて、今は講義#7と宿題#3にいます。
iPadでSplitViewControllerを正しく機能させようとしていますが、デバイスの向きが変わったときにUISplitViewControllerDelegateデリゲートメソッドが呼び出されないようです。
これが私がこれまでに得たものです:
-新しいiPadストーリーボードを作成し、UIViewControllerをマスター(CalculatorViewController)として、別のUIViewControllerを詳細(GraphViewController)としてSplitViewControllerを追加しました。私はすべてを正しく行ったと思います。
-私のGraphViewController.hは、UISplitViewControllerDelegateプロトコルを実装しています。
-私のGraphViewController.mは、SplitViewControllerデリゲートをそれ自体に設定します。
-私のGraphViewController.mは、必要なメソッドを実装しています。
-私のGraphViewController.mは、すべての方向をサポートしています。
これで、アプリケーション(SnowLeopardのXcode4.2、iOS 5.0、iPad Simulator 5.0)を実行すると、splitViewController:willHideViewController:withBarButtonItem:forPopoverController:メソッドが呼び出され、マスタービューが非表示になり、ボタンが詳細ビューに表示されます。マスタービューをPopOverで表示します(私はポートレートモードになっているため)。
ただし、デバイスの向きを(ランドスケープモードに...まだシミュレーターを使用して)変更しても、何も起こらず、上記のメソッドは再度呼び出されません。マスタービューが非表示になり、PopOverボタンが表示されたままになりますが、実際には、マスタービューを表示し、PopOverボタンを非表示にします。
私は何が間違っているのですか?これは私のコード、Xcode、シミュレーターの問題ですか?
grand-central-dispatch - 異なるディスパッチ キューで非同期にディスパッチされた場合、タスクはどのように同期されますか? (シャッターバグの例)
2011 年秋の講義 10 で紹介された Shutterbug のサンプル コードでは、写真がダウンロードされ、次のコードを使用してテーブル ビュー コントローラーに更新されます。
クラスで説明したように、写真のフェッチ アクティビティは flickr ダウンローダー キューで非同期にディスパッチされ、テーブル ビューの更新コード (UIKit 機能) は main_queue で非同期にディスパッチされます。
私が理解していないのは、写真のフェッチ アクティビティが完了するまで main_queue のテーブル ビュー更新コードが実行されないようにするメカニズムです。コード ブロックでは、キューは連続してディスパッチされますが、システムがどのように認識しているかわかりません。写真のダウンロードが完了するまで main_queue でタスクを実行しないようにします。これが発生しない場合、写真のダウンロードが完了する前に main_queue タスクが実行された場合、self.photos は nil になります。
iphone - iOS デバイスでアプリケーションを実行しようとすると、Xcode プロビジョニング プロファイルの問題が発生する
iTunes U の優れたスタンフォード CS193P コース (2011 年秋) をフォローしています:
http://www.stanford.edu/class/cs193p/cgi-bin/drupal/downloads-2011-fall
iOS 4.3.3 を搭載した iPhone 3GS で、iOS 5 を搭載した Xcode 4.2 からアプリケーション (電卓) を実行しようとしています。
私はそれらの指示に従いました:
http://www.stanford.edu/class/cs193p/cgi-bin/drupal/system/files/lectures/Developing%20on%20Devices.pdf
問題なく開発者証明書を取得できました。
iOS Dev Center にアクセスして、プロビジョニング プロファイルを作成しました。フォームフィールドにこれを入力しました:
- プロフィール名:「電卓」と入力しました(よろしいですか?)
- 証明書: 自分の名前を選択しました (開発者証明書を 1 つしか作成していないため、唯一のオプションです)
- アプリ ID: 「電卓」を選択しました (アプリ ID を 1 つだけ作成したため、唯一のオプション)
- デバイス: デバイスを選択しました (デバイスを 1 つしか作成していないため、唯一のオプション)
証明書とデバイスに対して正しいことをしたと確信しています。
アプリ ID については、少し混乱しました。
- 説明: 「電卓」に入りました (繰り返しますが、関係ありますか?)
- Bundle Seed Id (App ID Prefix): 「Your Team Id xxxxxxx will be used as you App Id Prefix」と表示されました (変更できませんでした)
- バンドル ID (アプリ ID サフィックス): 「com.myname.calculator」と入力しました
プロビジョニング プロファイルは、1 つのアプリに対して作成する必要がありますか (作成するアプリごとに新しいプロファイルを作成します)、または 1 つの開発者に対して作成する必要がありますか (作成するすべてのアプリに対して 1 つだけ作成します)。
最終的にプロビジョニング プロファイルが完成したら、それをオーガナイザー (Xcode) にインポートし、iPhone に接続して [開発に使用] をクリックしました。私はすべて終わったと思った!
ただし、接続されたデバイスを使用して Xcode でアプリケーションを実行しようとすると、次のエラー メッセージが表示されます。
互換性のある iOS バージョンで使用できる、プロビジョニングされた iOS デバイスはありません。アプリケーションを実行するのに十分な最新バージョンの iOS を搭載した iOS デバイスを接続するか、iOS シミュレーターを宛先として選択します。
プロビジョニング プロファイルに何か問題があったためですか? 私は周りを検索しましたが、Code Signing Identity と .plist の設定は問題ないようです。
それとも、私の iPhone に iOS 4.3.3 があり、iOS 5.0 を使用して開発しようとしているからですか? それが問題かもしれないと最初に思ったので、5.0 にアップグレードしようと言いました。ただし、iPhone を iOS 6.01 にしかアップグレードできないようです。これにより、iTunes U コースが iOS 5.0 をターゲットにしているわけではありません。一部の機能が動作しないことは確かです。iPhone を iOS 5.0 のみにアップグレードする方法はありますか?
現在、問題が実際にどこにあるのかを突き止めようとしています...私のプロビジョニングプロファイルですか、それとも私のiPhoneデバイスですか?
編集#1:
まったく新しいアプリケーションを使用してゼロから始めました (ビューに「Hello World!」というラベルが追加された単一ビュー アプリケーションを作成しましたが、それ以上のものはありません)。次に、次の手順に従って別のプロビジョニング プロファイルを最初から作成しました
。
私はまだ同じエラーメッセージを持っていました。
次に、新しいプロジェクトの [ビルド設定] に移動し、iOS 展開ターゲットを iOS 5.0 から iOS 4.3 に変更しました... すると、デバイスでアプリケーションが起動しました! しかし、アプリケーションは私の「Hello World!」を表示しませんでした。ラベル。
正しいことをしているように見えますが、私のデバイスの iOS は古すぎます。iOS 5.0 にアップグレードしたいのですが、iOS 6.01 にはアップグレードできません。
編集#2:
iPhone 3GS を iOS 6.01 にアップグレードし、オーガナイザーで [開発に使用] ボタンをクリックすると、次のエラー メッセージが表示されました。
「My iPhone」の iOS のバージョンは、この iOS SDK のインストールによる開発がサポートされている iOS のどのバージョンとも一致しません。デバイスを以下にリストされている OS のバージョンに復元するか、iOS SDK の最新バージョンに更新してください。ここで入手できます。
Gaston Vachon の iPhone
6.0.1 (10A523)にインストールされた OSXcode がサポートする iOS バージョン 最新
5.0 (9A334)
4.3
4.2 (8C134)
4.2
Xcode を最新バージョン (4.5.2) にアップグレードする必要がありますが、Snow Leopard を使用しているためアップグレードできません。そのため、Mac OS を Lion または Mountain Lion にアップグレードしてから、Xcode を 4.5.2 (iOS 6.01) にアップグレードする必要があります。しかし、私は Xcode 4.2 と iOS 5.0 で行われた iTunes U のコースに従っているので、このコースを完了するまでこれらのアップグレードを行うのを待ちたいと思います。
勝てないと思います!
ios - iOS (cs193p): MapViewController でデリゲートを使用して、別のコントローラーから別のスレッドを使用して画像を取得する際の問題
私は iOS 5.0 開発に関する優れた CS193P レクチャーに従っています:
http://www.stanford.edu/class/cs193p/cgi-bin/drupal/
私は今、割り当て #5、必要なタスク #5b に取り組んでいます。マップ上の注釈をクリックしたときに、サムネイルを含む吹き出しを表示する必要があります。
次のコード(Flickrを使用)で問題なくこれを行うことができました。
MapViewController.h:
MapViewController.m:
PhotoListTableViewController.m:
MapViewController の mapView:didSelectAnnotationView: メソッドでデリゲートを使用して、別のコントローラー PhotoListTableViewController から画像を取得します (汎用の MapViewController があることを確認するため)。
正常に動作しています... しかし、別のスレッドで Flickr を呼び出すには、このコードを変更する必要があります。そこで、mapViewController:imageForAnnotation: メソッドを次のように変更しました。
ただし、このコードではサムネイルは表示されません。メソッドが「画像を返す」場合、画像はまだnilであり、downloadQueueスレッドが完了していないためです。次のように、ブロック内で「画像を返す」ことを試みました。
しかし、コンパイラはそれを好まない:
'UIImage *(^)(void)' をタイプ 'disptach_block_t' (別名 'void (^)(void)') のパラメーターに渡す互換性のないブロック ポインター タイプ
ブロックの先頭にある ^{ は void を意味することはわかっていますが、UIImage を返すように変更できますか? それとも最初からやり方が悪いのでしょうか?
PhotoListTableViewController から MapViewController に画像を返す方法がわかりません。これはどのように行うべきですか?
ios - UIActivityIndicatorView は決してアニメーション化しない
のPhotoViewController
クラスがあり@property UIActivityIndicatorView* spinner
ます。 Flickr から写真をダウンロードし、スピナーにアニメーションの開始と停止のタイミングを伝える のFlickrPhotoViewController
サブクラスです。PhotoViewController
ビュー コントローラに Flickr の写真が渡されるたびに、「updatePhoto」が呼び出されます。
上記の方法論は、テーブル コンテンツのダウンロード中にテーブル ビュー コントローラーで回転するホイールを表示するために使用するものとまったく同じであり、常にそこで機能します。
updatePhoto
が存在する場合、I print a messageの冒頭で気付くでしょうUIActivityIndicatorView
。awakeFromNib
、viewDidLoad
、 にも同様のステートメントを入れましたviewWillAppear
。私がそれを実行すると、これは私が得る正確な出力です:
spinner
に存在しないのはなぜawakeFromNib
ですか? ドキュメントは、「オブジェクトが awakeFromNib メッセージを受信すると、すべてのアウトレットとアクション接続がすでに確立されていることが保証される」と示しています。IBOutlet は、接続先のオブジェクトが存在しなくても接続できますか? この場合、spinner
IBOutlet をspinner
割り当てずにストーリーボードに接続できますか?
これを超えて、ゲッターがspinner
存在しない場合にインスタンス化されるように、ゲッターをオーバーライドしました。その結果、印刷出力は次のようになります。
これは私が以前に見たかったものです。それにもかかわらず、私はまだアニメーションを取得していません。
私が除外した可能性のある問題:
- スピナーは背景と同じ色で、見えなくなります。私のプロジェクトでは、背景は黒、スピナーは白です。
UIActivityIndicatorView
いくつかの高価なメソッドがメインスレッドをブロックしている間にアニメーション化しようとしています。私のプロジェクトでは、すべてのファイル システム I/O およびダウンロード メソッドが非メインdispatch_async
キューで呼び出されます。- スピナーのIBOutlet が接続されていません。私のプロジェクトでは、これを何度も再確認しました。ストーリーボードと PhotoViewController.h ファイルの両方から、接続されていることがわかります。
これら 3 つの可能性はすべて、ダウンロード プロセス全体で正常にアニメーション化されるという事実によって除外され[self.spinner startAnimating];
ます。viewWillAppear
必要に応じて、このプロジェクトをダウンロードできます。大きな写真を表示しようとする画面に移動すると、スピナーが表示されないことがわかります。このプロジェクトには多くの問題がありますが、これは私が今焦点を当てているものです。
編集1:
- プロジェクトの欠落している依存関係を Git に追加したので、プロジェクトがコンパイルされます
編集 2 (2013 年 2 月 2 日):
- この問題は、
updatePhoto
別のView ControllerprepareForSegue
がFlickrPhotoViewController
. これが問題に寄与している可能性はありますか?
ios - 特定の状態のUIButtonの画像を削除するには?
カードゲームの仕事をしています。カードの裏面に画像を表示し、カードの表面にカードの内容を表示する必要があります。背面に表示する画像を取得しましたが、選択したときに画像をクリアする方法がわかりません。(すべての run-this-code-when-it's-selected コードが実行されているため、実際に状態を変更しないという問題ではないことはわかっています。) これが私のコードです。
私が間違っていることについて何か考えはありますか?