我试图从three20弹出TTPhotoViewController。起初它没有带后退按钮,但我现在已经实现了它并且尝试来弹出视图而没有运气。这是我的代码片段:
按钮(可行) -
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:TTLocalizedString(@"Back", @"Back to Albums") style:UIBarButtonItemStyleBordered target:self action:@selector(popView)];
-popView(调用方法,但语句不起作用) -
- (void) popView {
[self.navigationController popViewControllerAnimated:NO];
}
感谢
更新0 -
这是ttphotoviewcontroller在其init中的代码(我检查程序是否正在运行) -
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) {
self.navigationItem.backBarButtonItem =
[[[UIBarButtonItem alloc]
initWithTitle:
TTLocalizedString(@"Photo",
@"Title for back button that returns to photo browser")
style: UIBarButtonItemStylePlain
target: nil
action: nil] autorelease];
self.statusBarStyle = UIStatusBarStyleBlackTranslucent;
self.navigationBarStyle = UIBarStyleBlackTranslucent;
self.navigationBarTintColor = nil;
self.wantsFullScreenLayout = YES;
self.hidesBottomBarWhenPushed = YES;
self.defaultImage = TTIMAGE(@"bundle://Three20.bundle/images/photoDefault.png");
}
return self;
}
它已经添加了一个后退按钮,但是这段代码也没有为我的导航栏添加按钮。
答案 0 :(得分:1)
如果你正在做类似于他在Catalog
示例中所做的事情,那么你只需在根视图控制器中添加它(即不会在它被推入堆栈后出现的视图中,但是在父视图中)。
此操作与常规iPhone UINavigationController操作没有区别。
- (id)init {
if (self = [super init]) {
// setup back button for nav controller
self.navigationItem.backBarButtonItem =
[[[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStyleBordered
target:nil action:nil] autorelease];
}
}
当新视图被推入堆栈时,它将使用该返回按钮返回。您不必调用popView或其他任何东西。请注意我使用的是backBarButtonItem
,而您使用的是leftBarButtonItem
(只有在使用自定义后退按钮时才能使用)。
有关详细信息,请阅读this document
的“更新导航栏”部分答案 1 :(得分:0)
在推送TTPhotoViewController之前添加此代码。
UIBarButtonItem *backButton=[[[UIBarButtonItem alloc] initWithTitle:@"ButtonTitle"
style:UIBarButtonItemStyleBordered
target:nil
action:nil] autorelease];
self.navigationItem.backBarButtonItem = nil;
self.navigationItem.backBarButtonItem = backButton;