3

我正在尝试将 a 的样式更改UITableViewController为分组。我知道你可以在创建新的表格视图时这样做,但是我有一个扩展类UITableViewController,所以我不需要创建一个新的表格视图。这是我的代码:

#import "DetailViewController.h"
#import "NSArray-NestedArrays.h"

@implementation DetailViewController

@synthesize steak, sectionNames, rowControllers, rowKeys, rowLabels;

- (void)viewDidLoad {
    sectionNames = [[NSArray alloc] initWithObjects:[NSNull null], NSLocalizedString(@"General", @"General"), nil];
    rowLabels = [[NSArray alloc] initWithObjects:
             [NSArray arrayWithObjects:NSLocalizedString(@"Steak Name", @"Steak Name"), nil],
             [NSArray arrayWithObjects:NSLocalizedString(@"Steak Wellness", @"Steak Wellness"), NSLocalizedString(@"Steak Type", @"Steak Type"), NSLocalizedString(@"Other", @"Other"), nil]
             , nil];
    rowKeys = [[NSArray alloc] initWithObjects:
           [NSArray arrayWithObjects:@"steakName", nil],
           [NSArray arrayWithObjects:@"steakWellness", @"steakType", @"other", nil]
           , nil];


    // TODO: Populate row controllers array

    [super viewDidLoad];

}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return [sectionNames count];
}
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
    id theTitle = [sectionNames objectAtIndex:section];
    if ([theTitle isKindOfClass:[NSNull class]]) {
        return nil;
    }
    return theTitle;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return [rowLabels countOfNestedArray:section];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *CellIdentifier = @"SteakCellIdentifier";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue2 reuseIdentifier:CellIdentifier];
    }

    NSString *rowKey = [rowKeys nestedObjectAtIndexPath:indexPath];
    NSString *rowLabel = [rowLabels nestedObjectAtIndexPath:indexPath];

    cell.detailTextLabel.text = rowKey;
    cell.textLabel.text = rowLabel;
    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
    return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    // TODO: Push editing controller onto the stack
} 
@end 
4

6 回答 6

4
- (instancetype)init
{
   self = [super initWithStyle:UITableViewStyleGrouped];
   if (self) {
   }
   return self;
}
于 2015-12-22T06:16:09.623 回答
2

不关注?您不必“制作新的表格视图”是什么意思?您仍然必须实例化一个。

要么您已经创建了一个并且它具有您想要的样式,要么您必须实例化一个新的并在其上设置属性。

tableView.style 是只读的。因此,您无法更改现有样式的样式。您将不得不执行以下操作:

[MyTableViewSubClass initWithFrame:aFrame style:UITableViewStyleGrouped];
于 2012-08-11T23:21:28.913 回答
2

您不能只更改UITableView. 所以你只有两个选择:

  1. 制作另一个UITableView分组的
  2. 使用自定义单元格

希望能帮助到你

于 2012-08-11T23:28:07.863 回答
2

当你实例化你的视图控制器时,你会处理这个问题。

例如,要实例化一个普通的 UITableViewController,你需要执行以下操作。

UITableViewController *tblCtr = [[UITableViewController alloc]initWithStyle:UITableViewStyleGrouped];

因此,如果您扩展了 UITableViewController,那么您的 init 代码应该负责这一点。

MyCustomTableViewController *mctvc = [[MyCustomTableViewController alloc]initWithStyle:UITableViewStyleGrouped];

为此,您需要在 .m 文件中实现此方法。下面是一个示例,说明您的头文件和实现文件应包含的实例化内容。

标题

@interface MyCustomTableViewController : UITableViewController
{
  -(id)initWithStyle:(UITableViewStyle)style;
}

执行

@implementation MyCustomTableViewController

-(id)initWithStyle:(UITableViewStyle)style
{
   self = [super initWithStyle:style];

   if(self)
   {
     ...
     return self;
   }
   return nil;
 }
 @end

当您调用 [super initWithStyle:style] 时,Apple 提供的代码将负责使用请求的视图样式为您构建表格视图。

于 2012-08-11T23:33:27.857 回答
1

您可以像这样创建一个新的 tableview 来覆盖UITableviewController的 tableview:

UITableView *tableView = [[UITableView alloc] initWithFrame:self.tableView.frame style:UITableViewStyleGrouped];
self.tableView = tableView;
于 2015-05-09T06:52:58.203 回答
-1

只需伙计分配设置表格的框架和样式..示例代码写下来。

[tableObject initWithFrame:CGRectMake(x,y,width,height) style:UITableViewStyleGrouped];
于 2012-08-12T09:34:43.817 回答