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。したがって、2 つのオプションしかありません。

  1. UITableViewグループ化された別のものを作る
  2. カスタム セルを使用する

それが役に立てば幸い

于 2012-08-11T23:28:07.863 に答える
2

View Controllerをインスタンス化するときに、これを処理します。

たとえば、通常の 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] を呼び出すと、アップルが提供するコードが、要求されたビュー スタイルでテーブルビューを作成します。

于 2012-08-11T23:33:27.857 に答える
1

次のように、新しいテーブルビューを作成して のテーブルビューを上書きできますUITableviewController

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 に答える