0

さて、私はこれを数時間続けており、連絡を取る時が来たと考えました。初めて、1つのストーリーボードで複数のテーブルビュー(2)を操作しています。独自のビューコントローラー(メインビューコントローラー)を使用してストーリーボードをセットアップします。共通パターンとしてメインビューコントローラーに委任した最初のテーブル。2番目のテーブルビューでは、デリゲートとして別のクラスを設定し、テーブルビューとデータソースに委任します。

見た目は良く、各テーブルビューは正しいデータをロードして表示します。これまでのところすべて良好です。

これが2番目のテーブルビューの摩擦です-外部から委任されたもので、次の方法で行が選択されたときにアクションを実行します:-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath blah、blah、何とか。

必要なアクションは、「メインビューコントローラー」に接続されている新しいビューコントローラーへのセグエを開始することです。メインビューコントローラーに、セグエアクションを実行するセレクターがあります(それ以外の場合は機能します)

デリゲートからメインビューコントローラーへの接続を確立する方法がわからないため、正しいセレクターを呼び出して、セグエを開始できます。通常、セグエの間では、segue.parent ..segue.destination....などを使用します。この状況では機能しません。セグエがデリゲートに接続されていないため、デリゲートクラスからセグエできません。

私はこのアプローチを試しましたが、機能しません:StartViewController:

VisitListDelegate = [[VisitsMainPageDelegate alloc] init];
[self.iboVisitsTableView  setDelegate:self.VisitListDelegate];
[self.iboVisitsTableView  setDataSource:self.VisitListDelegate];

LocalVisits *LV = [[LocalVisits alloc] init]; //datasource
VisitListDelegate.visits = [LV getLocalVisits]; //sets variable in delagate

VisitsMainPageDelegateというデリゲートクラス

#import <UIKit/UIKit.h>
@class StartViewController;

@interface VisitsMainPageDelegate : UIViewController
    <UITableViewDelegate,UITableViewDataSource>  {

StartViewController *sourceParent;

}
@property (nonatomic,retain) StartViewController *sourceParent;
@property (nonatomic,strong) NSMutableArray *visits;
@end

次に、次のように参照してみてください。

[sourceParent jumpToVistDetailsForThisVisit:@"test"];

エラーは発生しませんが、機能しません。

これを解決するための助けをいただければ幸いです。

ありがとう!

4

1 に答える 1

0

デリゲート クラスをインスタンス化するときは、次のように ViewController への参照を与える必要があります。

[[VisitsMainPageDelegate alloc] init];
[self.iboVisitsTableView setDelegate:self.VisitListDelegate]; 
delegate.sourceParent = self;

既にある最初の 2 行 - 追加する必要がある最後の行です。

于 2012-04-08T07:35:20.193 に答える