如何以编程方式在其上添加 UINavigationBar 和后退按钮
Posted
技术标签:
【中文标题】如何以编程方式在其上添加 UINavigationBar 和后退按钮【英文标题】:How to programmatically add a UINavigationBar and a back button on it 【发布时间】:2012-11-26 13:36:03 【问题描述】:我是新手,尝试使用UITextView
制作类似于 iPhone 的 Notes 应用程序。
我收到了textView
和线路,它工作正常。
我的问题是我想在上面添加一个UINavigationBar
和后退按钮。
我想在底部添加一个UIToolBar
,并在其上添加 2 个 toolBarItems 如何以编程方式执行此操作。任何帮助对我来说都是一个很大的推动力..
下面是代码sn-p。
NoteView.h
@interface NoteView : UITextView <UITextViewDelegate,UITabBarControllerDelegate>
NoteView.m
- (id)initWithFrame:(CGRect)frame
self = [super initWithFrame:frame];
if (self)
self.backgroundColor = [UIColor colorWithRed:0.6f green:0.6f blue:1.0f alpha:1.0f];
self.font = [UIFont fontWithName:@"MarkerFelt-Thin" size:20];
self.contentMode = UIViewContentModeRedraw;
return self;
- (void)drawRect:(CGRect)rect
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetStrokeColorWithColor(context, [UIColor colorWithRed:0.0f green:0.0f blue:0.0f alpha:0.2f].CGColor);
CGContextSetLineWidth(context, 1.0f);
CGContextBeginPath(context);
NSUInteger numberOfLines = (self.contentSize.height + self.bounds.size.height) / self.font.leading;
CGFloat baselineOffset = 6.0f;
for (int x = 0; x < numberOfLines; x++)
CGContextMoveToPoint(context, self.bounds.origin.x, self.font.leading*x + 0.5f + baselineOffset);
CGContextAddLineToPoint(context, self.bounds.size.width, self.font.leading*x + 0.5f + baselineOffset);
CGContextClosePath(context);
CGContextStrokePath(context);
AddNotesViewController.h
@interface AddNotesViewController : UIViewController <UITextViewDelegate,UITabBarDelegate>
NoteView *note;
@property (nonatomic, retain) NoteView *note;
@end
AddNotesViewController.m
- (void)loadView
[super loadView];
self.note = [[[NoteView alloc] initWithFrame:self.view.bounds] autorelease];
[self.view addSubview:note];
note.delegate = self;
note.text=@"";
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
[note setNeedsDisplay];
- (void)textViewDidBeginEditing:(UITextView *)textView
CGRect frame = self.view.bounds;
frame.size.height -= KEYBOARD_HEIGHT;
note.frame = frame;
- (void)textViewDidEndEditing:(UITextView *)textView
note.frame = self.view.bounds;
- (BOOL)textView:(UITextView *)textView
shouldChangeTextInRange:(NSRange)range
replacementText:(NSString *)text
if ([text isEqualToString:@"\n"])
[textView resignFirstResponder];
return NO;
return YES;
请告诉我如何以及在哪里添加导航栏,后退按钮和工具栏,2 toolBarItems 就可以了。提前谢谢...
【问题讨论】:
重复。 ButtonOnNav & NavBackButton 已经回答。通过link 和F&Q。 ***.com/questions/13488710/… 你是否使用导航控制器 是的,我正在使用导航控制器 【参考方案1】:导航栏图片
UINavigationBar *navBar = [[self navigationController] navigationBar];
UIImage *image = [UIImage imageNamed:@"TopBar.png"];
[navBar setBackgroundImage:image forBarMetrics:UIBarMetricsDefault];
返回按钮
-(void)getBackBtn
UIButton *Btn =[UIButton buttonWithType:UIButtonTypeCustom];
[Btn setFrame:CGRectMake(0.0f,0.0f,50.0f,30.0f)];
[Btn setBackgroundImage:[UIImage imageNamed:[NSString stringWithFormat:@"back.png"]] forState:UIControlStateNormal];
//[Btn setTitle:@"OK" forState:UIControlStateNormal];
//Btn.titleLabel.font = [UIFont fontWithName:@"Georgia" size:14];
[Btn addTarget:self action:@selector(backBtnPress:) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *addButton = [[UIBarButtonItem alloc] initWithCustomView:Btn];
[self.navigationItem setLeftBarButtonItem:addButton];
BackButtonAction
-(IBAction)backBtnPress:(id)sender
在 NavigationBar 上查看
对于导航栏上的查看,您可以按照我的回答Link
【讨论】:
【参考方案2】:使用此代码....
UIBarButtonItem *addButton = [[UIBarButtonItem alloc]
initWithTitle:NSLocalizedString(@"Back", @"")
style:UIBarButtonItemStyleDone
target:self
action:@selector(YourActionMethod:)];
self.navigationItem.leftBarButtonItem = addButton;
【讨论】:
我必须在 - (void)loadView 的 AddNotesViewController.m 中添加它对吗?? 在上面的sn-p中,你观察到noteView.M r8中的drawRect了吗?该代码是在 textView 中绘制线条,因此此 barButtonItems 不显示...以上是关于如何以编程方式在其上添加 UINavigationBar 和后退按钮的主要内容,如果未能解决你的问题,请参考以下文章
如何在查看器中使用 Autodesk.Viewing.MarkupsCore 扩展,以便我可以在其上绘图?
如何以正确的方式在 Nuxt 项目中添加 Vuepress?