2017-09-06 6 views
1

iMessageの拡張チュートリアルは、目的関数-cの初心者ですぐにiMessage拡張を実装する必要があるため、Swiftにあります。Objective-Cでコーディングしたい場合はMSStickerBrowserViewControllerいくつかのようにUITableViewControllerそれはdatasrouceプロトコルの権利を使用する原因ですか?MSStickerBrowserViewControllerを目的関数で使用する

だから私はこのように私のIMessageが拡張アプリを実装:

@interface MessagesViewController()<MSStickerBrowserViewDataSource> 
@property (strong, nonatomic) NSMutableArray *stickerList; 
@end 

を私はすでに

stickerBrowserView:(MSStickerBrowserView *)stickerBrowserView stickerAtIndex:(NSInteger)index 

(NSInteger) numberOfStickersInStickerBrowserView:(MSStickerBrowserView *)stickerBrowserView 

方法を実装し、プロパティとしてstickerListを初期化していますviewControllerの

と私はその後、私の仕事は

MSStickerBrowserViewController *stickerBrowserViewController = [[MSStickerBrowserViewController alloc]initWithStickerSize:MSStickerSizeRegular]; 
stickerBrowserViewController.view.backgroundColor = [UIColor redColor]; 
[self.view addSubview:stickerBrowserViewController.view]; 

しかし、私が得た唯一のものであることを行った後に行われ、MSStickerViewControllerを追加するために細かいこととルートビューのサブビューとしてのビューを作っただろうと思います私は多分そこ考えにdataresourceのいくつかのフックの欠如赤い内容

(MSStickerBrowserViewControllerのビューをindicts rootviewに追加されていなかった)しかし、私の画像のどれもステッカー

として示しませんでした。 MSStickerBrowserViewController、代理人が見つかりません。リソース属性をフックします。

私はまた、迅速なコードでそれを行うには、いくつかのoverrideものがあることがわかり、私はMSStrickerBrowserViewControllerのサブクラスを作成し、それを行うために、サブクラスでMSStickerBrowserViewDataSourceのプロトコルを実装する必要がありますか?

このようにするには、Objective-Cコードをどういう意味ですか?

答えて

0

この問題は、MSStickerBrowserViewDataSourceプロトコルをMessagesViewControllerに実装することと関係しますが、次にMSStickerBrowserViewControllerという別のインスタンスを作成することと関係しています。これまでのところ問題ありませんが、あなたが指摘したように、データソースはMSStickerBrowserViewControllerMSStickerBrowserViewDataSourceプロトコルを実装しているクラスに設定していません:MessagesViewController

MSStickerBrowserViewControllerクラスはMSStickerBrowserViewという種類のビューを持ち、stickerBrowserViewと呼ばれています。あなたが探しているプロパティはdataSourceで、hereと記載されています。あなたのコードのコンテキストでは、それは次のようになります。stickerBrowserViewController.stickerBrowserView.dataSource

FrameworkのエンジニアがちょうどviewコールstickerBrowserViewを決め、そしてなぜstickerBrowserViewデータソースがdelegate呼ばおそらく、彼らが望んでいたされていないしなかった理由私は確かに言うことができませんでしたstickerBrowserViewと通常のUIViewの機能の間にはっきりとした区別があります。

質問にお答えしますが、別の方法として、サブクラスMSStickerBrowserViewControllerを作成し、そのサブクラスでデータソースメソッドを実装する方法があります。最初のアプローチでは、UIViewControllerから継承する2つのクラスを同時に画面に表示させることで問題に遭遇する可能性があります。これは可能ですが、この場合はおそらく必要ありません。あなたの特定の状況では、MessagesViewControllerを使用する代わりに、第2のルートに進み、サブクラスMSStickerBrowserViewControllerをお勧めします。

@interface MessagesViewController()<MSStickerBrowserViewDataSource> 
@property (strong, nonatomic) NSMutableArray *stickerList; 
@end 

MSStickerBrowserViewController *stickerBrowserViewController = [[MSStickerBrowserViewController alloc]initWithStickerSize:MSStickerSizeRegular]; 
stickerBrowserViewController.view.backgroundColor = [UIColor redColor]; 

// Missing Line 
stickerBrowserViewController.stickerBrowserView.dataSource = self; 

[self.view addSubview:stickerBrowserViewController.view]; 
関連する問題