我需要知道如何为通用app制作弹出菜单。我曾为此目的使用过警报,但我无法嵌入新的字体类型而无法添加任何图像,因此菜单看起来不太好。任何人都可以告诉我这个问题。
警报菜单的代码
- (IBAction)setting:(UIBarButtonItem *)sender {
UIAlertView *alert = [[UIAlertView alloc]
initWithTitle:@"དཀར་ཆག"
message:@"\nགང་རུང་ཞིག་འདེམས་རོགས།"
delegate:self
cancelButtonTitle:@"ཕྱིར་འཐེན།"
otherButtonTitles:@"ཉེ་འཆར།",@"དགའ་མོས།",@"ཉེ་འཆར་གཙང་བཟོ།",@"དགའ་མོས་གཙང་བཟོ།",nil];
[alert show];
}
答案 0 :(得分:2)
<强> PopoverViewController 强>
打开ViewController.h文件,并声明以下IBAction
方法:
1
- (IBAction)showUserDataEntryForm:(id)sender;
返回Interface Builder,将该操作方法连接到新添加的按钮。
现在,再次打开ViewController.h
文件,首先导入TestViewController
类,如下所示:
1
#import "TestViewController.h"
此外,通过将ViewController
类添加到接口标题行,使TestViewControllerDelegate
类符合@interface ViewController : UIViewController <UIActionSheetDelegate, TestViewControllerDelegate>
协议,如下所示:
1
TestViewController
通过采用上述协议,我们以后可以使用IBAction
类的委托方法来获取输入的数据。
现在,让我们来看看本节最重要的部分,我们之前声明的ViewController.m
方法的实现以及popover控制器的用法。但是对于初学者,我们必须为popover声明一个私有类属性,因此打开@interface ViewController ()
@property (nonatomic, strong) UIPopoverController *userDataPopover;
@end
并转到界面的私有部分。在那里,添加以下属性声明:
TestViewController
现在,直接进入IBAction方法实现,我们将初始化并使用上述对象。正如我在本节开头已经说过的,popover控制器的特殊功能是能够显示另一个视图控制器的内容,因此我们必须做的第一步是初始化- (IBAction)showUserDataEntryForm:(id)sender {
TestViewController *testViewController = [[TestViewController alloc] initWithNibName:@"TestViewController" bundle:nil];
testViewController.delegate = self;
类的对象
xib
}
如您所见,在初始化时我们也加载了视图控制器的testViewController
文件,除此之外,我们使我们的类成为self.userDataPopover = [[UIPopoverController alloc] initWithContentViewController:testViewController];
对象的委托。现在我们手上有一个视图控制器,让我们使用我们私下声明的popover控制器对象,让它最终出现。我们只需要添加三个命令,我们将逐步查看。最初,让我们执行初始化:
TestViewController
很明显,我们要显示的视图控制器直接作为弹出控制器的参数给出。这就是我们首先声明并初始化[self.userDataPopover presentPopoverFromRect:[(UIButton *)sender frame]
inView:self.view
permittedArrowDirections:UIPopoverArrowDirectionAny
animated:YES];
对象的原因。下一步是定义弹出窗口大小,它通常与包含的视图大小匹配:
self.userDataPopover.popoverContentSize = CGSizeMake(320.0,400.0);
最后,让我们显示它:
IBAction
您可以注意到此方法接受四个参数。第一个是弹出窗口所在的框架,通常是用于显示它的按钮框架。下一个是弹出控制器将出现的视图。如您所知,并不总是需要在默认视图中显示它,但这是最常见的情况。第三个参数指定弹出控制器上显示的箭头的方向,指向源自的按钮。除非您确保弹出控制器始终显示在同一个位置,否则您最好使用UIPopoverArrowDirectionAny参数来允许系统决定箭头的位置。不要忘记,当改变iPad的方向时,弹出控制器可以重新定位到一个新的位置,箭头很可能指向另一个方向。最后,最后一个参数指定是否使用动画显示弹出窗口,通常该值设置为YES。
以下是整个- (IBAction)showUserDataEntryForm:(id)sender {
TestViewController *testViewController = [[TestViewController alloc] initWithNibName:@"TestViewController" bundle:nil];
testViewController.delegate = self;
self.userDataPopover = [[UIPopoverController alloc] initWithContentViewController:testViewController];
self.userDataPopover.popoverContentSize = CGSizeMake(320.0, 400.0);
[self.userDataPopover presentPopoverFromRect:[(UIButton *)sender frame]
inView:self.view
permittedArrowDirections:UIPopoverArrowDirectionAny
animated:YES];
}
方法:
.Export Report File = CViews.sql
.set width 200
.Rtitle ''
.Foldline on
.Format Off
.set heading '';
.set heading off;
.set UNDERLINE OFF;
.Omit On 4,5
Select
CASE When ColNo = 1
THEN 'Replace View
$view_db_name.VW_'||Tbl.Tablename||' As locking row for access
Select ('
Else '' END (Title '')
, Cols.Columnname (Title '')
, CASE WHEN RevColNo = 1 THEN ')
From $db_name.'||Tbl.Tablename||';'
Else '' END (Title '')
, Row_Number () Over(Partition By Tbl.Tablename
Order By Cols.ColumnId) As ColNo
, Row_Number () Over(Partition By Tbl.Tablename
Order By Cols.ColumnId Desc) As RevColNo
From DBC.Tables Tbl
Join DBC.Columns Cols
On Tbl.Databasename = Cols.Databasename
And Tbl.Tablename = Cols.TableName
Where Tbl.Databasename = '$db_name'
And Tbl.Tablekind = 'T'
Order By Tbl.Tablename, ColNo
;
.Export Reset
.Run File CViews.sql