如何将数据发送到以编程方式创建的popover?

时间:2013-12-26 03:23:31

标签: ios objective-c uitableview

我正在尝试在iOS tableview中为动态单元格创建一个popover,我有点卡住了。显然,storyboard segues不能与动态单元格一起使用,所以我必须以编程方式执行此操作。我有一个普通的ViewController类,其属性如下:

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

编辑:为了测试我将nil传递给createPopoverWith:

1 个答案:

答案 0 :(得分:1)

我相信只有一种方法可以通过编程方式实例化你正在使用故事板设置的视图控制器(你说你正试图这样做)。

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

下图显示了在故事板中添加标识符的位置。

storyboard example