2013-12-26 1 views
0

Я пытаюсь создать popover для динамических ячеек в iOS tableview, и я немного застрял. По-видимому, раскадровки не могут использоваться с динамическими ячейками, поэтому я должен делать это программно. У меня есть нормальный класс ViewController со свойством следующим образом:Как отправить данные в popover, создаваемые программно?

SOCommandPopup.h

#import <UIKit/UIKit.h> 
#import "SOCommand.h" 
@protocol ReturnCommand <NSObject> 
@required 
-(void)getCommand:(SOCommand*)command; 
@end 
@interface SOCommandPopup : UIViewController <UITextFieldDelegate> 
@property (nonatomic,strong)SOCommand* command; 
@property (strong,nonatomic)id<ReturnCommand>delegate ; 
@end 

Он содержит протокол, который используется другой контроллер зрения (тот, который вызывает его), чтобы получить данные, введенные в попугай.

поповер контейнер ViewController

-(void)createPopoverWith:(NSIndexPath*)commandIndex 
{ 
    SOCommandPopup* newPopup = [[SOCommandPopup alloc]init]; 
    editCommandPopup = [[UIPopoverController alloc]initWithContentViewController:newPopup]; 
    editCommandPopup.popoverContentSize = newPopup.preferredContentSize; 
    if(commandIndex) 
    { 
     newPopup.command = [_serverModuleCommands objectAtIndex:commandIndex.row]; 
    } 
    else if(!commandIndex) 
    { 
     NSLog(@"test"); //this fires, when I pass nil 
     newPopup.command = nil; 
       [editCommandPopup presentPopoverFromBarButtonItem:self.btn_addButton permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; 

    } 

} 

SOCommandPopup класс будет строить себя на основе command собственности посланного к нему. Поэтому я хочу, чтобы в контейнере вызывается [self createPopoverWith:someCommand]. Однако я не знаю, как установить его свойство, так как это всего лишь UIPopoverController, а не SOCommandPopup.

Любая помощь будет очень признательна, спасибо!

~ Carpetfizz

EDIT: Ради тестирования я передаю nil в createPopoverWith:

ответ

1

Я считаю, есть только один способ программно создать экземпляр контроллера вид, что вы укладка с раскадровки (которые вы сказали, что пытаетесь сделать).

SDCommandPopup *newPopup = [self.storyboard instantiateViewControllerWithIdentifier:@"some_identifier"]; 
newPopup.command = command; 
// then present the viewcontroller however you want 

И следующее изображение показывает, где вы добавляете идентификатор в раскадровку.

storyboard example

+0

Thank you soo much! Это сработало отлично! – Carpetfizz

Смежные вопросы