iOS 7 UITableView里面有一个popover

时间:2013-12-02 07:42:54

标签: ios uitableview ios7 uipopovercontroller

我有一个UITableView,它有一些自定义样式。此表视图显示在应用程序的两个位置,其中一个位于UIPopoverController内。但是当tableview位于popover内部时,它会采用默认的tableview样式,如“Popover”下的UI Transition Guide中所述。

我遇到的问题是似乎无处可改变这种行为。无论我在哪里尝试修改tableview的属性,弹出框内的视图都不会改变。

之前有人处理过此问题或有任何想法吗?

这是我创建表视图的LibraryProductView的init方法:

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        self.sectionOrdering = [NSArray arrayWithObjects:
                                [NSNumber numberWithInt:LIBRARY_PRODUCT_SECTION_DESCRIPTION],
                                [NSNumber numberWithInt:LIBRARY_PRODUCT_SECTION_DOCUMENTS],
                                [NSNumber numberWithInt:LIBRARY_PRODUCT_SECTION_ACTIVE_INGREDIENTS],
                                [NSNumber numberWithInt:LIBRARY_PRODUCT_SECTION_RELATED_PRODUCTS],
                                [NSNumber numberWithInt:LIBRARY_PRODUCT_SECTION_RELATED_DOCUMENTS], nil];

        self.backgroundColor = [UIColor whiteColor];

        self.tableView = [[UITableView alloc] initWithFrame:CGRectInset(self.bounds, 10, 0) style:UITableViewStyleGrouped];
        self.tableView.backgroundColor = [UIColor whiteColor];
        self.tableView.dataSource = self;
        self.tableView.delegate = self;
        self.tableView.separatorColor = [UIColor clearColor];
        self.tableView.showsVerticalScrollIndicator = NO;

        [self addSubview:self.tableView];
    }
    return self;
}

以下是将包含视图(LibraryProductView)添加到popover:

的位置
- (IBAction)didTouchInformationButton:(id)sender
{
    if (_infoPopover != nil && _infoPopover.isPopoverVisible)
    {
        [_infoPopover dismissPopoverAnimated:YES];
        return;
    }

    CGSize preferredSize = CGSizeMake(600.0f, 500.0f);

    LibraryProductViewController* productController = [[[LibraryProductViewController alloc] initWithPreferredSize:preferredSize] autorelease];
    productController.filterByMyCompany = NO;
    productController.product = _activityInput.product;

    UINavigationController* nav = [[[UINavigationController alloc] initWithRootViewController:productController] autorelease];
    nav.title = _activityInput.product.name;

    RELEASE(_infoPopover);
    _infoPopover = [[UIPopoverController alloc] initWithContentViewController:nav];
    _infoPopover.popoverContentSize = CGSizeMake(preferredSize.width, preferredSize.height + 46);
    [_infoPopover presentPopoverFromRect:_infoButton.frame inView:_infoButton permittedArrowDirections:UIPopoverArrowDirectionLeft animated:YES];
}

LibraryProductView是在LibraryProductViewController的viewDidLoad方法中创建的。

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.libraryProductView = [[LibraryProductView alloc] initWithFrame:(usingPreferredSize ? CGRectMake(0.0, 0.0, preferredSize.width, preferredSize.height) : self.view.bounds)];
    self.libraryProductView.dataSource = self;
    self.libraryProductView.delegate = self;

    [self.view addSubview:self.libraryProductView];
}

1 个答案:

答案 0 :(得分:0)

要设置TableView的属性,您可以在

中进行设置
- (NSInteger) numberOfSectionsInTableView:(UITableView *)tableView
{
    [tableView setBackgroundColor:[UIColor redcolor]];
    [tableView setSeparatorColor: [UIColor blueColor]];

    return 1;
}

当然,这假设您已在.h文件中设置了UITableViewDataSource