8

.

你好,

我正在尝试以编程方式将 UIButton 和其他项目添加到我的 UIViewController 中,并且根据我在其他 SO 问题中阅读和看到的内容,我应该使用以下代码走上正确的轨道:

- (void)viewDidLoad
{
[super viewDidLoad];



UIButton *backButton = [UIButton buttonWithType:UIButtonTypeCustom];    
backButton = [[UIButton alloc] init];
backButton = [UIButton buttonWithType:UIButtonTypeCustom];
backButton.frame = CGRectMake(10, 25, 150, 75);
backButton.titleLabel.font = [UIFont fontWithName:@"Helvetica-Bold" size:15];
backButton.titleLabel.text = @"Back"; 
[self.view addSubview:backButton];


// Do any additional setup after loading the view.
}

现在代码被放在 viewDidLoad 方法中并且它没有出现,这让我想到了一个问题——我做错了什么?

当我想更改背景颜色并放入 viewDidLoad 时,它可以正常工作。

干杯杰夫

4

7 回答 7

25

我认为您可能正确插入了按钮,但只是看不到它,因为它没有背景并且没有显示文本。

尝试使用圆形矩形按钮系统按钮,看看它是否会显示出来。正确设置文本。我还将删除设置字体,以防万一字体有问题。

// backButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
backButton = [UIButton buttonWithType:UIButtonTypeSystem];
backButton.frame = CGRectMake(10, 25, 150, 75);
[backButton setTitle:@"Back" forState:UIControlStateNormal];
[self.view addSubview:backButton];

更新:UIButtonTypeRoundedRect已弃用。

于 2012-05-25T00:59:03.430 回答
4

您设置的按钮标题不正确。采用:

- (void)setTitle:(NSString *)title forState:(UIControlState)state

也正如其他人所说,您不需要初始化按钮三次。删除第 2 行和第 3 行。

于 2012-05-25T00:56:22.600 回答
4

您已经使用静态方法 buttonWithType 创建了按钮,您再次为该按钮分配了内存。

UIButton *backButton = [UIButton buttonWithType:UIButtonTypeCustom];
backButton.frame = CGRectMake(10, 25, 150, 75);
backButton.titleLabel.font = [UIFont fontWithName:@"Helvetica-Bold" size:15];
backButton.titleLabel.text = @"Back";
[self.view addSubview:backButton];
于 2013-01-04T05:35:10.013 回答
0

除了评论中指出的问题

UIButtonTypeCustom,创建一个空白按钮。

当您想将图像用作按钮时使用此选项,但请记住使用 setImage: 覆盖按钮的标题。所以你需要设置一个BackgroundImage。

你的按钮实际上在那里它只是没有“出现”在那里

所以

使用UIButtonTypeRoundRect(可能略有不同)

或者如果你想要一个图像作为一个按钮。

使用UIButtonTypeCustom 呼叫setBackgroundImage:然后呼叫setTitle:forState:

于 2012-05-25T00:58:33.240 回答
0

你必须使用按钮类型是 RoundedRect 然后我们可以看到背景颜色

[UIButton buttonWithType: UIButtonTypeRoundedRect]; 

希望它会有所帮助!

于 2015-05-15T10:38:21.400 回答
0

您可以使用 dispatch_after 稍后调用块。所以这里第一个视图被加载,它将在 0.1 秒内加载,然后所有按钮都在视图中可见。Xcode,开始输入 dispatch_after 并按 Enter 以自动完成以下内容:

试试这个:

 dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{

  UIButton *backButton = [UIButton buttonWithType:UIButtonTypeCustom];    
  backButton = [[UIButton alloc] init];
  backButton = [UIButton buttonWithType:UIButtonTypeCustom];
  backButton.frame = CGRectMake(10, 25, 150, 75);
  backButton.titleLabel.font = [UIFont fontWithName:@"Helvetica-Bold" size:15];
  backButton.titleLabel.text = @"Back"; 
  [self.view addSubview:backButton];

 });
于 2015-06-05T13:10:48.090 回答
0

对我来说,问题是UIButton's文本和背景的默认颜色与我的应用程序的背景颜色的组合使它看起来好像按钮不存在一样;只是很难看到。将文本颜色设置为与应用背景形成鲜明对比的颜色可解决此问题。

于 2021-06-28T22:36:27.280 回答