簡體   English   中英

為什么委托不調用NavigationController

[英]Why delegate is not calling on navigationController

我知道如何使用委托模式

  1. 聲明協議
  2. 必需或可選方法
  3. id<> delegate屬性
  4. [delegate respondtoselector:@selector(method)]
  5. class <someProtocol>繼承協議
  6. -(void) protolcolMethod
  7. class1Obj.delegate = self;

我在我的應用程序中使用了這幾個位置,但是現在我在同一應用程序中再次執行此操作,respontoselector無法正常工作。 唯一的區別是這次是在NavController中。

NavController父tableview類didselectrow,推入另一個視圖,該視圖上有一個按鈕,該按鈕上調用presentmadelcontroller,這是我聲明協議並在navigationContoller父類中繼承的位置。 但是為什么它不起作用 我為此奮斗了幾個小時。

此類以模態表示,並聲明此協議

#import <CoreData/CoreData.h>

@protocol xPro <NSObject>
-(void)xGet;
@end

id<xPro> xDel;

@interface rosterForGroup : UIViewController <NSFetchedResultsControllerDelegate>
{
    NSFetchedResultsController *fetchedResultsController;
    NSArray *dispName;
}

@property (strong, nonatomic) IBOutlet UITableView *tableView;

@property (strong, nonatomic) id<xPro> xDel; 

- (IBAction)xFunc:(id)sender;

@end


.m file ...
- (IBAction)xFunc:(id)sender
{
    [xDel xGet];
}

此類是NavController父類

    ...
    @interface groupChatViewController : UIViewController<XMPPRoomDelegate, createNewGroupDelegate, UITableViewDataSource, UITableViewDelegate, xPro>
    ...
    @property (strong, nonatomic) rosterForGroup *xR4G;
    ...


- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.

    xR4G = [[rosterForGroup alloc]init];
    xR4G.xDel = self;
...

-(void)xGet
{
    NSLog(@"AAAAAAH");
}

請避免使用這些奇怪的對象名稱。

rosterforgroup分配/初始化

- (IBAction)openGroupOptions:(id)sender
{
     roster4Group = [[rosterForGroup alloc]init];
     [roster4Group setDelegate:self];
     [self presentModalViewController:roster4Group animated:true];
     //[xmppRoom fetchMembersList]; 
}

也許這是一個長鏡頭; 但我懷疑rosterForGroup這實際上是“在屏幕上”是一樣的情況下,你是alloc/init在您的viewDidLoad方法荷蘭國際集團。 也許您是通過segues或其他方法到達那里的; 但是您顯示的代碼並沒有(盡管可能在省略的代碼中)表明您實際上是在將xR4G視圖控制器設置為包含的 View Controller並顯示在屏幕上(在連接了其操作方法后,等等)。

這意味着該解決方案是對View Controller關系的略微重組,如果您不清楚如何完成此操作,則可能會引起一個額外的SO問題(就目前而言,此問題不是建議的正確位置)如何獲得想要的東西)。

編輯

我還懷疑您的rosterForGroup視圖控制器未正確初始化。 僅在VC上執行alloc / init並不能正確設置其視圖及其IB *連接(除非使用loadView方法以編程方式完成所有操作)。 它們應該從故事板或XIB文件( initWithNibName:[self.storyboard instantiateViewControllerWithIdentifier:]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM