タグ付けされた質問 「objective-c」

このタグは、Objective-C機能に関する質問または言語のコードに依存する質問でのみ使用する必要があります。タグ[cocoa]および[cocoa-touch]は、Appleのフレームワークまたはクラスについて質問するために使用する必要があります。これらのプラットフォームに固有の問題には、関連タグ[ios]、[macos]、[apple-watch]、および[tvos]を使用します。

10
単一行のUILabelの隣にNSTextAttachment画像を中央配置
NSTextAttachment属性付きの文字列に画像を追加して、垂直方向の中央に配置したいと思います。 次のコードを使用して文字列を作成しました。 NSMutableAttributedString *str = [[NSMutableAttributedString alloc] initWithString:DDLocalizedString(@"title.upcomingHotspots") attributes:attrs]; NSTextAttachment *attachment = [[NSTextAttachment alloc] init]; attachment.image = [[UIImage imageNamed:@"help.png"] imageScaledToFitSize:CGSizeMake(14.f, 14.f)]; cell.textLabel.attributedText = [str copy]; ただし、画像はセルの上部に配置されているように見えますtextLabel。 添付ファイルが描画される四角形を変更するにはどうすればよいですか?

11
現在の日付から7日を引く
現在の日付から7日を引くことができないようです。これは私がそれをやっている方法です: NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; NSDateComponents *offsetComponents = [[NSDateComponents alloc] init]; [offsetComponents setDay:-7]; NSDate *sevenDaysAgo = [gregorian dateByAddingComponents:offsetComponents toDate:[NSDate date] options:0]; SevenDaysAgoは、現在の日付と同じ値を取得します。 助けてください。 編集:私のコードでは、現在の日付を取得する変数を正しいものに置き換えるのを忘れていました。したがって、上記のコードは機能しています。
117 objective-c  ios  nsdate 

7
UITableView beginUpdates / endUpdatesでアニメーションが終了したことを検出するにはどうすればよいですか?
insertRowsAtIndexPaths/deleteRowsAtIndexPathswrapped in を使用してテーブルセルを挿入/削除していますbeginUpdates/endUpdates。beginUpdates/endUpdatesrowHeightを調整するときにも使用しています。これらの操作はすべて、デフォルトでアニメーション化されています。 使用中にアニメーションが終了したことをどのように検出できbeginUpdates/endUpdatesますか?
116 iphone  objective-c  ios  ipad 

7
UIActionSheetキャンセルボタンの奇妙な動作
アクションシートを開くUIBarButtonItemを使用して、ユーザーに何をするかを選択できるようにしています。「キャンセル」ボタンをクリックしない限り、すべてが期待どおりに機能します。ボタンのターゲットが本来あるべき場所から上に移動したように見えます。「キャンセル」と「OK」ボタンの真ん中のどこかをクリックすることによってのみそれをアクティブにすることができます。 私は他のアプリケーションでアクションシートを試してみましたが、それらは問題なく動作するため、私の親指ではありません。アクションシートがUIViewControllerで開いています - (void)showOpenOptions { UIActionSheet *sheet = [[UIActionSheet alloc] initWithTitle:NSLocalizedString(@"Open link in external application?", @"Open in external application") delegate:self cancelButtonTitle:NSLocalizedString(@"Cancel", @"Cancel") destructiveButtonTitle:NSLocalizedString(@"Open Link", @"Open Link") otherButtonTitles:nil]; [sheet showInView:self.view]; [sheet release]; }


10
`textField:shouldChangeCharactersInRange:`を使用して、現在入力されている文字を含むテキストを取得するにはどうすればよいですか?
以下のコードを使用して、ユーザーが入力するたびにtextField2のテキストコンテンツをのテキストコンテンツと一致するように更新しtextField1ていますtextField1。 - (BOOL) textField: (UITextField *)theTextField shouldChangeCharactersInRange: (NSRange)range replacementString: (NSString *)string { if (theTextField == textField1){ [textField2 setText:[textField1 text]]; } } しかし、私が観察する出力はそれです... textField1が「123」の場合、textField2は「12」です。 textField1が「1234」の場合、textField2は「123」です。 ...私が欲しいのは: textField1が「123」の場合、textField2は「123」です。 textField1が「1234」の場合、textField2は「1234」です。 何が悪いのですか?

2
オーバーライドされた記述メソッドでのオブジェクトのメモリアドレスのNSLog
オブジェクトの記述メソッドをオーバーライドしています。以下のコードでオブジェクトのメモリアドレスを印刷して{???}を置き換える方法を知る必要があります。 -(NSString *) description { return [NSString stringWithFormat:@"<SomeClass: %@>\nparmeterOne: %@\nparameterTwo: %@", {???}, self.parameterOne, self.paramterTwo]; } 私はそれを次のようにコンソールで印刷したいです: <SomeClass: 0x4c05600> parameterOne: 12 parameterTwo: sausages
116 objective-c  nslog 


13
提示されたView Controllerを閉じる
理論的な質問があります。さて、AppleのViewControllerガイドを読んでいます。 彼らが書きました: 提示されたビューコントローラーを却下するときがきたとき、推奨されるアプローチは、提示されたビューコントローラーに却下することです。言い換えると、可能な場合は常に、View Controllerを提示した同じView Controllerがそれを閉じる責任も負う必要があります。提示されたビューコントローラを閉じる必要があることを提示するビューコントローラに通知するためのいくつかの手法がありますが、好ましい手法は委譲です。 私が提示VCでのプロトコルを作成し、デリゲートvaribleを追加し、提示VCを退けるためにVCを提示してデリゲートメソッドを作成する必要がありますしかし、なぜ私の代わりに、単純なコールを、説明することはできません提示ビューコントローラメソッド [self dismissViewControllerAnimated:NO completion:nil]? なぜ最初の選択肢が優れているのですか?Appleが推奨する理由

4
キューに入れられたperformSelector:afterDelay呼び出しのキャンセル
呼び出し時に、すでにスタックされているセレクターイベントをイベントスタックまたはタイマースタック(またはAPIで使用されるメカニズム)からキャンセルできるかどうか誰かが知っていますperformSelector:withObject:afterDelayか? 私はこのイベントスタックを使用して、TabBarタブ内の画像の属性を変更しましたが、1回のループですばやく実行できるように、最大​​10秒の変更をキューに入れる場合がありました。 ユーザーがタブを切り替えると問題が発生します...たとえば、タブ#4が有効になるとすぐに表示される画像の画像変更をキューに入れ、ユーザーがすぐにタブ#3に切り替えてから、タブに戻ると言う#4 ...これにより、古いキューがまだ再生されている間に、10秒に相当する変更が再度キューに入れられます。十分に速く切り替えられた場合、おそらく2〜3秒でキューに入れられますが、5秒で到着します。ストリームは問題でした。 新しいスタックを配置する前に、変更の古いスタックをキャンセルする方法が必要でした... 私はこのクエリを過去形で書いています。なぜなら、再生機能にタカ目イベントフィルターを追加することで、この問題の代替ソリューションをすでに思いついたからです。でも、イベントのキャンセルが可能かどうかはまだ気になりますが、そういう知識は今後重宝すると思います。提供された支援に感謝します:)

19
別のUIViewの下のUIViewとの相互作用を許可する
別のUIViewの下にあるUIViewのボタンとの相互作用を許可する簡単な方法はありますか-ボタンの上部にある上部のUIViewからの実際のオブジェクトはありませんか? たとえば、現時点では、UIView(A)があり、画面の上部にオブジェクト、下部にオブジェクトがあり、中央には何もありません。これは、中央にボタンがある別のUIViewの上にあります(B)。ただし、Bの真ん中にあるボタンを操作できないようです。 Bのボタンを見ることができます-Aの背景をclearColorに設定しました-しかし、Bのボタンの上に実際にはAからのオブジェクトがないにもかかわらず、Bのボタンはタッチを受けていないようです。 編集 -私はまだトップUIViewのオブジェクトと対話できるようにしたい 確かにこれを行う簡単な方法はありますか?

30
UITableViewCellサブクラスで「-layoutSubviewsを実行した後も自動レイアウトが必要」
XCode 4.5とiOS 6を使用して、カスタムセルを含むシンプルなテーブルビューのアプリを開発しています。私はこれをiOS 5以下で100回行いましたが、何らかの理由で新しいautoLayoutシステムが多くの問題を引き起こしています。 テーブルビューとプロトタイプセルをIBでセットアップし、サブビューを追加してそれらをIBOutletsとして配線してから、デリゲートとdataSourceをセットアップしました。ただし、最初のセルがからフェッチされるたびcellForRowAtIndexPathに、次のエラーが発生します。 ***-[ShopCell layoutSublayersOfLayer:]、/ SourceCache / UIKit_Sim / UIKit-2372 / UIView.m:5776のアサーションエラー ***キャッチされない例外 'NSInternalInconsistencyException'によりアプリを終了します。理由: '-layoutSubviewsを実行した後も自動レイアウトが必要です。ShopCellの-layoutSubviewsの実装は、superを呼び出す必要があります。 私はサブクラス化されたセル(ShopCell)に-layoutSubviewsメソッドを実装していません。それを実行してスーパーコールを追加しようとしても、同じエラーが発生することを示唆しています。サブビューをIBのセルから削除し、それを標準のUITableViewCellに変更すると、すべて期待どおりに機能しますが、もちろんセルにはデータが残っていません。 私が見逃している単純なものがあることはほぼ確実ですが、私が間違ったことを示唆するドキュメントやガイドを見つけることができません。任意の助けいただければ幸いです。 編集: IBのUITableViewCellに変更して、すべてのサブビューをそのままにしてみましたが、それでも同じエラーが発生しました。

2
NSObject + loadおよび+ initialize-彼らは何をしますか?
+ initializeまたは+ loadをオーバーライドするように開発者を導く状況を理解することに興味があります。ドキュメントは、これらのメソッドがObjective-Cランタイムによって呼び出されることを明確にしていますが、これらのメソッドのドキュメントから明らかなのはこれだけです。:-) 私の好奇心は、Appleのサンプルコード-MVCNetworkingを見ることにあります。モデルクラスには+(void) applicationStartupメソッドがあります。ファイルシステムのハウスキーピング、NSDefaultsの読み取りなどを行います。NSObjectのクラスメソッドを読み取ろうとすると、この管理作業は+ loadに入れても問題ないようです。 私はMVCNetworkingプロジェクトを変更し、App Delegateの+ applicationStartupへの呼び出しを削除し、ハウスキーピングビットを+ loadに入れました...私のコンピューターは発火しませんでしたが、それが正しいというわけではありません!+ loadまたは+ initializeと対比して呼び出さなければならないカスタムセットアップメソッドについて、微妙な点、注意点、および注意点について理解を深めたいと思っています。 + loadのドキュメントの場合: ロードメッセージは、動的にロードされ、静的にリンクされたクラスとカテゴリに送信されますが、新しくロードされたクラスまたはカテゴリが応答可能なメソッドを実装している場合のみです。 すべての単語の正確な意味がわからない場合、この文は扱いにくく、解析が困難です。助けて! 「動的にロードされ、静的にリンクされた」とはどういう意味ですか?何かを動的にロードして静的にリンクできますか、それとも相互に排他的ですか? 「...新しくロードされたクラスまたはカテゴリは、応答できるメソッドを実装しています」どのメソッドですか?どのように応答しますか? + initializeに関しては、ドキュメントには次のように書かれています: 初期化は、クラスごとに1回だけ呼び出されます。クラスおよびクラスのカテゴリに対して独立した初期化を実行する場合は、ロードメソッドを実装する必要があります。 これは、「クラスを設定しようとしている場合は...初期化を使用しないでください」という意味です。じゃ、いいよ。いつまたはなぜ私は初期化をオーバーライドしますか?


16
UICollectionView現在表示されているセルインデックス
UICollectionViewiPadアプリケーションで初めて使用しています。UICollectionViewサイズとセルサイズが同じになるように設定しました。つまり、一度に1つのセルしか表示されません。 問題: ユーザーがUICollectionViewをスクロールするときに、どのセルが表示されているかを知る必要があるので、変更時に他のUI要素を更新する必要があります。このためのデリゲートメソッドは見つかりませんでした。どうすればこれを達成できますか? コード: [self.mainImageCollection setTag:MAIN_IMAGE_COLLECTION_VIEW]; [self.mainImageCollection registerClass:[InspirationMainImageCollectionCell class] forCellWithReuseIdentifier:@"cellIdentifier"]; [self.mainImageFlowLayout setScrollDirection:UICollectionViewScrollDirectionHorizontal]; [self.mainImageFlowLayout setMinimumInteritemSpacing:0.0f]; [self.mainImageFlowLayout setMinimumLineSpacing:0.0f]; self.mainImageFlowLayout.minimumLineSpacing = 0; [self.mainImageCollection setPagingEnabled:YES]; [self.mainImageCollection setShowsHorizontalScrollIndicator:NO]; [self.mainImageCollection setCollectionViewLayout:self.mainImageFlowLayout]; 私が試したこと: にUICollectionView準拠しているためUIScrollView、ユーザーのスクロールがUIScrollViewDelegateメソッドで終了すると -(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView しかし、上記の関数の内部で、現在表示されているセルインデックスを取得するにはどうすればよいですUICollectionViewか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.