2

我在接收 geoPoint 对象的块中有这段代码:

UIViewController *mapViewController1 =
                [[BSTGMapViewController alloc] initWithNibName:@"BSTGMapViewController_iPhone"
                                                           bundle:nil];
PFGeoPoint *currentLocation = geoPoint;
[self presentViewController:mapViewController1 animated:1 completion:nil];

如何将 geoPoint 变量传递给 mapViewController1,以便在

viewDidLoad 函数?我使用 XCode 4.6 定位 iOS 5。我该如何解决这个问题?

4

5 回答 5

3

在 BSTGMapViewController 内重载 initWithNibName 以传递参数

在 BSTGMapViewController 里面。

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil withGeoPoint:(CLLocation*)userLocation;

并在 BSTGMapViewController.m 中实现

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil withGeoPoint:(CLLocation*)userLocation
{
//usual code of init with nib name
locationhere=userlocation;

}

//你的代码

PFGeoPoint *currentLocation = geoPoint;
BSTGMapViewController *mapViewController1 =
                [[BSTGMapViewController alloc] initWithNibName:@"BSTGMapViewController_iPhone"
                                                           bundle:nil withGeoPoint:currentLocation];

[self presentViewController:mapViewController1 animated:1 completion:nil];
于 2013-03-21T11:29:49.680 回答
1

您可以像下面的代码一样覆盖 init 方法并将值发送到新的视图控制器

新视图界面中的声明

- (id)initWithTeamCount:(int)teamCount

新视图界面中的定义

- (id)initWithTeamCount:(int)teamCount {
    self = [super initWithNibName:nil bundle:nil];
    if (self) {
        // Custom initialization
        self.teamCountLabel.text = [NSString stringWithFormat:@"%d",teamCount];
    }
    return self;
}

从第一个视图传递值

SetTeamsViewController *vc = [[SetTeamsViewController alloc] initWithTeamCount:self.teamCount];
于 2013-03-21T11:28:44.287 回答
0

在将要呈现的 viewController 中定义一个属性。属性的类型将是您要传递的类型。

定义属性后,您可以使用您在将要呈现它的类中创建的对象来访问它。

BSTGMapViewController *mapViewController1 =
                [[BSTGMapViewController alloc] initWithNibName:@"BSTGMapViewController_iPhone"
                                                           bundle:nil];
mapViewController1.propertyName = valueToBePassed;

[self presentViewController:mapViewController1 animated:1 completion:nil];

就是这样。您可以在 viewDidLoad 中访问它。

于 2013-03-21T11:25:02.857 回答
0

为 BSTGMapViewController 编写自定义初始化程序,如下所示

-(id)initWithGeoPoint:(PFGeoPoint *)point
{
   self = [super initWithNibName:@"BSTGMapViewController_iPhone"
                                                           bundle:nil];
   if(self)
   {
       //here geopoint is class member
       geopoint = point;
   }
}

并使用

PFGeoPoint *currentLocation = geoPoint;
UIViewController *mapViewController1 =
                [[BSTGMapViewController alloc] initWithGeoPoint:currentLocation];

希望这可以帮助。

于 2013-03-21T11:27:32.613 回答
0

将您的初始化方法更改-(id)initWithNubName:(NSString*)nibName bundle:(NSBundle*)nibBundle;为:-(id)initWithNubName:(NSString*)nibName bundle:(NSBundle*)nibBundle location:(PFGeoPoint*)geoLocation;

定义incurrentLocation类型的属性。在初始化方法中,将属性设置为参数中的值。PFGeoPoint*BSTGMapViewController

viewDidLoad使用PFGeoPoint*对象的属性值。

于 2013-03-21T11:28:47.800 回答