0

私のアプリケーションは、作成したクラス TaskController : UINavigationControllerのルートビューコントローラーとして呼び出されるルートコントローラーで始まります(ビューUITableViewとして追加されます)。アプリケーションを起動すると、タイトルフォームTaskRootControllerとその背景色のみが表示されます。しかし、テーブルビューが表示されません。アプリケーションがrootViewControllerとしてTaskRootControllerで始まる場合、テーブルビューが表示されます。UINavigationControllerTaskRootController : UIViewController<UITableViewDelegate>

場合によっては、テーブルビューを表示するにはどうすればよいですか?PS。TaskRootControllerをTaskRootController:UITableViewControllerに切り替えても、動作は同じです。私のコードは以下の通りです:

AppDelegate.m

@implementation AppDelegate

@synthesize window = _window;
@synthesize taskController;

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.
    self.window.backgroundColor = [UIColor whiteColor];

    self.taskController = [TaskController alloc];
    self.window.rootViewController = self.taskController;

    [self.window makeKeyAndVisible];
    return YES;
}

- (void)applicationWillResignActive:(UIApplication *)application
{

}

- (void)applicationDidEnterBackground:(UIApplication *)application
{

}

- (void)applicationWillEnterForeground:(UIApplication *)application
{

}

- (void)applicationDidBecomeActive:(UIApplication *)application
{

}

- (void)applicationWillTerminate:(UIApplication *)application
{

}

@end

TaskController.m

@implementation TaskController

@synthesize taskRootController;

- (void) pushInboxController
{
    TaskBoxController *taskBoxController = [[TaskBoxController alloc] initWithNibName:nil bundle:NULL];
    [self pushViewController:taskBoxController animated:YES];
}

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
        [self.navigationBar setBarStyle: UIBarStyleBlack];
        [self.navigationBar setTranslucent: NO];
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    self.taskRootController = [[TaskRootController alloc] initWithNibName:nil bundle:NULL];
    UIViewController *root = self.taskRootController;
    [self initWithRootViewController: root];

}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear: animated];
    [self performSelector:@selector(pushInboxController)];
}

@end

TaskRootController.m

@implementation TaskRootController

@synthesize taskRootView;

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    NSLog(@"DUPA");

    NSLog(@"SIZE x:%f,y:%f ; %f:%f", self.view.bounds.origin.x, self.view.bounds.origin.y, self.view.bounds.size.width, self.view.bounds.size.height);
    self.view.backgroundColor = [UIColor grayColor];
    self.title = @"Root";
    self.taskRootView = [[UITableView alloc] initWithFrame: CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height) style:UITableViewStyleGrouped];
    self.taskRootView.delegate = self;
    self.taskRootView.dataSource = self;
    [self.view addSubview:self.taskRootView];

}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    // Return the number of sections.
    return 1; // put number for section.
}


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    // Return the number of rows in the section.
    return 6; // put number as you want row in section.
}

- (CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    CGFloat result = 20.0f;
    if([tableView isEqual:self.taskRootView])
    {
        result = 40.0f;
    }
    return result;
}

@end
4

4 に答える 4

1

このデリゲートメソッドを追加します。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }
    cell.textLabel.text = @"this is row";

    return cell;
}

編集 :

のオブジェクトをinit作成するときに置くTaskControllerAppDelegate.m

self.taskController = [[TaskController alloc]init];

また、デリゲートとデータソースの両方をTaskController.h

<UITableViewDataSource, UITableViewDelegate>

そして、その関連するメソッドを追加します。

于 2013-03-21T04:57:10.247 に答える
0
in Appdelegate File :-

self.TaskViewController = [[TaskViewController alloc] initWithNibName:@"TaskViewController" bundle:nil];
self.navigationController=[[UINavigationController alloc]initWithRootViewController:self.TaskViewController];

[self.window setRootViewController:navigationController];//ios-6
                           or
[self.window addSubview:navigationController.view];//<ios-6

Add a Delegate Method in UITableViewDelagates:-

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }
    cell.textLabel.text = @"Name";

    return cell;
}
于 2013-03-21T06:52:03.507 に答える
0

AppDelegate で

     self.taskController = [[TaskController alloc]initWithNibName:@"TaskController" bundle:[NSBundle mainBundle]];
     UINavigationController *task = [[UINavigationController alloc] initWithRootViewController:self.taskController];

    self.window.rootViewController = task;

あなたの TaskController で

    - (void)viewDidLoad
       {
         [super viewDidLoad];
         TaskRootController *tc = [[TaskRootController alloc] initWithNibName:@"TaskRootController" bundle:[NSBundle mainbundle]];
        [self addChildViewController:tc];
        [tc didMoveToParentViewController:self];
        [self.view addSubview:tc.view];
       }
于 2013-03-21T05:11:10.960 に答える
0

これを試して ::

テーブルビューのデリゲートとデータソースを設定します

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return 50;
}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    return [yourArray count];

}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString *MyIdentifier = @"MyIdentifier";

    UITableViewCell *cell =[tableView dequeueReusableCellWithIdentifier:MyIdentifier];
    if (cell == nil){
        cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:MyIdentifier] autorelease];
    }
    cell.textLabel.text = @"row";
    return cell;
}

それがあなたを助けることを願っています

于 2013-03-21T05:15:03.180 に答える