弹出框内的iOS 7 UITableView
Posted
技术标签:
【中文标题】弹出框内的iOS 7 UITableView【英文标题】:iOS 7 UITableView inside a popover 【发布时间】:2013-12-02 07:42:53 【问题描述】:我有一个 UITableView,它有一些自定义样式。此表格视图出现在应用程序的两个位置,其中一个位于 UIPopoverController 内。但是,当 tableview 在弹出框内时,它会采用默认的 tableview 样式,如“弹出框”下的UI Transition Guide 中所述。
我遇到的问题是似乎没有地方可以改变这种行为。无论我在哪里尝试修改 tableview 的属性,popover 内的视图都不会改变。
有人处理过这个问题或者有什么想法吗?
这是我创建表格视图的 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) 添加到弹出框的位置:
- (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];
【问题讨论】:
这里更新一些代码,你已经实现了。 您应该考虑到您的代码中有错误。所以你应该把它展示给我们。 我添加了一些代码。另外,由于它是“特定的编程问题”,为什么当它完全是主题时,这个问题被标记为“离题”?未能设置的属性之一是separatorColor
。
“有关您编写的代码问题的问题必须在问题本身中描述具体问题 - 并包括重现问题的有效代码。有关指导,请参阅 SSCCE.org。” ***.com/help/on-topic
【参考方案1】:
要设置 TableView 的属性,您可以在
中进行- (NSInteger) numberOfSectionsInTableView:(UITableView *)tableView
[tableView setBackgroundColor:[UIColor redcolor]];
[tableView setSeparatorColor: [UIColor blueColor]];
return 1;
当然,这假设您在 .h 文件中设置了 UITableViewDataSource
【讨论】:
以上是关于弹出框内的iOS 7 UITableView的主要内容,如果未能解决你的问题,请参考以下文章