我正在尝试在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:
答案 0 :(得分:1)
我相信只有一种方法可以通过编程方式实例化你正在使用故事板设置的视图控制器(你说你正试图这样做)。
SDCommandPopup *newPopup = [self.storyboard instantiateViewControllerWithIdentifier:@"some_identifier"];
newPopup.command = command;
// then present the viewcontroller however you want
下图显示了在故事板中添加标识符的位置。