изменить размер представления хостинга через addSubview в Core-Plot в XCode 4 - PullRequest
0 голосов
/ 22 июня 2011

Я врезаюсь в стену, пытаясь изменить размеры Hosting View. Проблема в том, что я получаю либо полноэкранный сюжет, либо пустой экран. Я надеюсь получить некоторые подсказки, чтобы решить эту проблему:

Я использую Xcode 4 | IOS 4.3 | Недавно загруженный основной график с использованием hg:

У меня есть два xib-файла (MainWindow и мой ViewController) Мой файл ViewController.xib содержит два объекта: просмотр и просмотр хостинга на одном уровне: + -View + -Graph Hosting View

Я не получаю ошибок в своем коде, но все я получаю пустой экран. Я искал 3 дня, как обойти эту проблему, но не нашел что-то, что работает.

Мой xAppDelegate.h

 #import <UIKit/UIKit.h>
  @class CorePlotTestViewController;
  @interface CorePlotTestAppDelegate : NSObject <UIApplicationDelegate> {

  }

  @property (nonatomic, retain) IBOutlet UIWindow *window;
  @property (nonatomic, retain) IBOutlet CorePlotTestViewController *viewController;
  @end

My ViewController.h

#import <UIKit/UIKit.h>
  #import "CorePlot-CocoaTouch.h"
  @interface CorePlotTestViewController : UIViewController <CPTPlotDataSource>
  {
    CPTXYGraph *graph;
    NSMutableArray *dataForPlot;
    CPTGraphHostingView *graphView;
  }
  @property(readwrite, retain, nonatomic) NSMutableArray *dataForPlot;
  @property(nonatomic, retain)IBOutlet CPTGraphHostingView* graphView;

My ViewController.m

 #import "CorePlotTestViewController.h"

  @interface CorePlotTestViewController(private)
  - (void) configureTableHeader;
  @end

  @implementation CorePlotTestViewController

  @synthesize dataForPlot;
  @synthesize graphView;

  -(void)dealloc 
  {
    [dataForPlot release];
    [super dealloc];
  }

  - (void)viewDidLoad {
    [super viewDidLoad];
    [self configureTableHeader];
  }
  - (void) configureTableHeader
  {
  // here I implement the contents of the Hosting View
  graph = [[CPTXYGraph alloc] initWithFrame: CGRectZero];
  CPTGraphHostingView *hostingView = [(CPTGraphHostingView *)[CPTGraphHostingView alloc]  
     initWithFrame:CGRectZero];
  [self.view addSubview:hostingView]; 
  ...
  // etc
  ...
  }

1 Ответ

0 голосов
/ 04 июля 2011

В своем коде вы инициализируете представление хоста с использованием фрейма CGRectZero, который в основном является фреймом с началом в (0,0), шириной и высотой 0 пикселей.Это причина, по которой вы вообще не видите график при запуске проекта.

Если вы задали нестандартный размер и расположение для представления хостинга в Интерфейсном Разработчике, он переопределяется этим кодом.Кстати, я не уверен, почему вы хотите добавить представление хостинга к представлению контроллера в коде.Вам просто нужно расположить оба компонента с помощью Interface Builder, указав размер представления хоста и расположение, которое вы хотите иметь.

Последнее: почему вы добавляете 'T' к именам классов Core-Plot?CPTPlotDataSource должно быть просто CPPlotDataSource;CPTXYGraph: CPXYGraph;и т.д.

...