从另一个类访问视图的实例?

时间:2011-06-22 06:08:19

标签: iphone objective-c ios4

我一直试图做这个很长一段时间。所以这就是我正在做的事情

firstviewcontroller
.h

iPhoneStreamingPlayerViewcontroller *viewController; 
@property(nonatomic,retain)iPhoneStreamingPlayerViewController *viewController;

的.m
      在 didselectrowatindexpath

    BooksNavController *bks  = [[BooksNavController alloc]init];


    bookDetailViewController.title = [NSString stringWithFormat:@"%@",[booksArray objectAtIndex:rowSelected]];  
    NSString *ti = [NSString stringWithFormat:@"%@",[booksArray objectAtIndex:rowSelected]];

    [bookDetailViewController title3:ti];

    Music_appAppDelegate *delegate = [[UIApplication sharedApplication]delegate];
    [delegate.booksNavController pushViewController:bookDetailViewController animated:YES];

    [bks nowPlayingView:bookDetailViewController];
    NSString *check = [NSString stringWithFormat:@"%@",[urlArray objectAtIndex:rowSelected]];
    [bookDetailViewController check:check];
    [bks release];

现在位于 secondviewcontroller

didselectrowatindexpath (再次是一个tableview)

 if (self.bookDetailViewController == nil)
{
    iPhoneStreamingPlayerViewController *aBookDetail = [[iPhoneStreamingPlayerViewController alloc] initWithNibName:@"iPhoneStreamingPlayerView" bundle:nil];
self.bookDetailViewController = aBookDetail;
    [aBookDetail release];
}

BooksNavController *bks  = [[BooksNavController alloc]init];


bookDetailViewController.title = [NSString stringWithFormat:@"%@",[booksArray objectAtIndex:rowSelected]];  
NSString *ti = [NSString stringWithFormat:@"%@",[booksArray objectAtIndex:rowSelected]];


[bookDetailViewController title3:ti];

Music_appAppDelegate *delegate = [[UIApplication sharedApplication]delegate];
[delegate.booksNavController pushViewController:bookDetailViewController animated:YES];

[bks nowPlayingView:bookDetailViewController];
NSString *check = [NSString stringWithFormat:@"%@",[urlArray objectAtIndex:rowSelected]];
[bookDetailViewController check:check]; 
[bks release];

PlaylistTableViewController *playlistTableViewController = [[PlaylistTableViewController alloc]init];
[playlistTableViewController checkView:2];

playlistTableViewController.bookDetailViewController1 = bookDetailViewController;
[playlistTableViewController release];

虽然由于某种原因将视图设置为nil,但这不起作用我不知道为什么(我也为视图创建了一个属性)。

2 个答案:

答案 0 :(得分:1)

你可以这样做:

以下是如何实现条件的想法。

假设您有2个视图控制器。

FirstViewController

SecondViewController

现在, 在SecondViewController.h文件中创建一个变量 id parent;

创建一个方法:

- (无效)的setParent:(ID)pParent;

在SecondViewController.m文件中

实现如下方法

-(void)setParent:(id)pParent{
    parent=pParent
}

现在,在FirstViewController中有一个SecondViewController对象。

假设它的名字是objSecondViewController。

推送到secondViewController后调用“setParent”方法。

像 [objSecondViewController setParent:self];

就是这样。 现在,如果你想调用FirstViewController的任何方法,

然后你可以使用“父”对象。

有一件事, 在“SecondViewController.m”文件中导入“FirstViewController.h”。

希望你明白这一点,对你有帮助。

答案 1 :(得分:0)

您需要设置一个delagate方法,甚至更好(更简单),请查看NSNotificationCenter。它将通过将方法从一个视图控制器传递到另一个视图控制器来完成工作,并且可以将操作链接到它。