GVKun编程网logo

如何在导航栏Swift右侧添加自定义视图?(如何在导航栏swift右侧添加自定义视图)

18

本文将为您提供关于如何在导航栏Swift右侧添加自定义视图?的详细介绍,我们还将为您解释如何在导航栏swift右侧添加自定义视图的相关知识,同时,我们还将为您提供关于android–使用单选按钮向自定

本文将为您提供关于如何在导航栏Swift右侧添加自定义视图?的详细介绍,我们还将为您解释如何在导航栏swift右侧添加自定义视图的相关知识,同时,我们还将为您提供关于android – 使用单选按钮向自定义组添加自定义视图、android – 添加自定义视图作为XML布局的视图、c# – 如何将自定义视图添加到monotouch中的XIB文件定义视图、ios – Swift – 如何将Tab Bar和导航栏添加到单个视图控制器?的实用信息。

本文目录一览:

如何在导航栏Swift右侧添加自定义视图?(如何在导航栏swift右侧添加自定义视图)

如何在导航栏Swift右侧添加自定义视图?(如何在导航栏swift右侧添加自定义视图)

我试图在 UINavigationBar的* 右侧添加 自定义视图 。我尝试了以下操作,但是视图未显示!请帮助,在此先感谢! *

let viewOnrightButton = UIView(frame: CGRect(x: 2, y: 2, width: 60, height: 22)) // viewOnrightButton.frame = CGRectMake(2, 2, 60, 22)viewOnrightButton.layer.cornerRadius = 2viewOnrightButton.backgroundColor = UIColor(red: 0.961, green: 0.827, blue: 0.239, alpha: 1.00)lblNumbersOfBanana.frame = CGRectMake(2, 1, viewOnrightButton.frame.width-20, 20)lblNumbersOfBanana.text = "001"var bananaImgView = UIImageView(frame: CGRect(x: viewOnrightButton.frame.width-22, y: 0, width: 20, height: 20)) //  bananaImgView.frame = CGRectMake(viewOnrightButton.frame.width-22, 0, 20, 20)bananaImgView.image = UIImage(named: "banana")viewOnrightButton.addSubview(lblNumbersOfBanana)viewOnrightButton.addSubview(bananaImgView)self.navigationItem.rightBarButtonItem?.customView = viewOnrightButton

答案1

小编典典

//创建uiview并添加三个自定义按钮

 func addRightButton(){    let viewFN = UIView(frame: CGRectMake(0, 0, 180,40))        viewFN.backgroundColor = UIColor.yellowColor()    let button1 = UIButton(frame: CGRectMake(0,8, 40, 20))    button1.setImage(UIImage(named: "notification"), forState: UIControlState.Normal)    button1.setTitle("one", forState: .Normal)    button1.addTarget(self, action: #selector(self.didTapOnRightButton), forControlEvents: UIControlEvents.TouchUpInside)    let button2 = UIButton(frame: CGRectMake(40, 8, 60, 20))    button2.setImage(UIImage(named: "notification"), forState: UIControlState.Normal)    button2.setTitle("tow", forState: .Normal)    let button3 = UIButton(frame: CGRectMake(80, 8, 60, 20))     button3.setImage(UIImage(named: "notification"), forState: UIControlState.Normal)    button3.setTitle("three", forState: .Normal)    button3.addTarget(self, action: #selector(self.didTapOnRightButton), forControlEvents: UIControlEvents.TouchUpInside)    viewFN.addSubview(button1)    viewFN.addSubview(button2)    viewFN.addSubview(button3)    let rightBarButton = UIBarButtonItem(customView: viewFN)    self.navigationItem.rightBarButtonItem = rightBarButton}

android – 使用单选按钮向自定义组添加自定义视图

android – 使用单选按钮向自定义组添加自定义视图

我有一个自定义视图,其中包含一个RadioButton.

SingleRadioItem:

public class SingleRadioItem extends LinearLayout {
    private TextView mTextKey;
    private RadioButton mRadioButton;
    private ImageView mImageSeparator;

    public SingleRadioItem(Context context,AttributeSet attrs) {
        super(context,attrs);
        View view = LayoutInflater.from(context).inflate(R.layout.rtl_single_radio_item,this,true);

        mTextKey = (TextView)view.findViewById(R.id.single_radio_item_text_key);
        mRadioButton = (RadioButton)view.findViewById(R.id.single_radio_item_button);
        mImageSeparator = (ImageView)view.findViewById(R.id.single_image_separator);
    }

    public void setKey(String key) {
        mTextKey.setText(key);
    }

    public boolean getSelectedState() {
        return mRadioButton.isSelected();
    }

    public void setSelectedState(boolean selected) {
        mRadioButton.setSelected(selected);
    }
}

我想创建此视图的实例,将它们添加到RadioGroup并将RadioGroup添加到LinearLayout.
当我这样做时,它允许我将所有单选按钮设置为选中,这意味着,RadioGroup运行不正常(可能是因为我这样做…)

RadioGroup radioGroup = new RadioGroup(this);
        radioGroup.setorientation(RadioGroup.VERTICAL);

        SingleRadioItem radio1 = new SingleRadioItem(this,null);
        SingleRadioItem radio2 = new SingleRadioItem(this,null);

        radioGroup.addView(radio1);
        radioGroup.addView(radio2);

        updateDetailsView.addView(radioGroup);

显然,当我添加RadioButton radio1 = new RadioButton(this); RadioGroup效果很好.

是否甚至可以添加一个视图,将一个单选按钮添加到一个放射组,我只是遗漏了一些东西或根本不可能?

谢谢!

解:
扩展@cosmincalistru回答并帮助他人:

对于我添加到LinearLayout的每个SingleRadioItem我附加了一个这样的监听器:

radio1.setonClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {

                if (lasTradioChecked != null) {
                    lasTradioChecked.setCheckedState(false);
                }

                lasTradioChecked = (SingleRadioItem)v;
                lasTradioChecked.setCheckedState(true);
            }
        });

您还需要将SingleRadioItem XML中的RadioButton视图设置为可单击:false.

解决方法

RadioButton必须直接从属于RadioGroup,否则您的按钮将被视为来自不同的组.
最好的想法是在你的情况下在每个RadioButton上使用监听器.

编辑:
每当我想将一组RadioButtons作为一个组的一部分而不能使用RadioGroup时,我会做这样的事情:

RadioButton r1,r2,....;
// Instantiate all your buttons;
...
// Set listener on each
for(each RadioButton) {
    rx.setonCheckedchangelistener(OnCheckedchangelistener() {
        @Override
        public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
            if (isChecked) {
                //set all buttons to false;
                for(each RadioButton) {
                    rx.setChecked(false);
                }
                //set new selected button to true;
                buttonView.setChecked(true);
            }
        }
    });
}

android – 添加自定义视图作为XML布局的视图

android – 添加自定义视图作为XML布局的视图

方案如下:

我有一个活动RunTrainingWorkoutsView,它使用XML布局_run_workout.xml_,其中一些标签由CountDownTimer更新.工作正常…

现在,除了每秒通过onTick()CountDownTimer对象的回调方法更新的标签,我想在我的_run_workout.xml layout_中添加一个自定义表面视图,它将绘制一些每秒由同一onTick()方法更新的弧. .

我的run_workout.xml:

<training.timer.CounterClockView 
    android:id="@+id/counter_clock_surface"
    android:layout_width="300dp" 
    android:layout_height="240dp">
</training.timer.CounterClockView>

我的自定义view扩展了surfaceView

public class CounterClockView extends SurfaceView {

Paint paint = new Paint();
Paint paint2 = new Paint();

final RectF rect = new RectF();
final RectF rect2 = new RectF();

int counterarcAngle = 15;
//constructor
public CounterClockView(Context context, AttributeSet attributeSet) {
    super(context);

    //setting some paint properties...

    this.setBackgroundColor(Color.TRANSPARENT);

}

@Override
public void onDraw(Canvas canvas) {

    rect.set(50, 50, 150, 150);
    rect2.set(50, 50, 150, 150);

    this.layout(0, 0, 200, 200);

    canvas.drawArc(rect, -90, 360, false, paint);
    canvas.drawArc(rect2, -90, counterarcAngle, false, paint2);

}

扩展活动的主要类是使用以下代码在布局中获取对自定义surfaceView的引用:

//counterClockView  is declared outside of onCreate() as CounterClockView counterClockView;  

//later in onCreate(){....
counterClockView  = (CounterClockView) findViewById(R.id.counter_clock_surface);

问题是改变customView对象的成员变量的值(counterClockView)

counterClockView.counterarcAngle = 10;

将崩溃应用程序…

另外,从我的主要活动开始,我想调用invalidate()方法在更改counterarcAngle值后重做表面视图,但这会导致应用程序崩溃…

为什么不能创建counterClockView对象并将其引用到相同类型的xml布局元素并更改其外观,使其无效等?

编辑LogCat:

threadid=1: thread exiting with uncaught exception (group=0x40015560)

ERROR/AndroidRuntime(487): FATAL EXCEPTION: main

ERROR/AndroidRuntime(487): java.lang.RuntimeException: Unable to start activity ComponentInfo{training.timer/training.timer.RunTrainingWorkoutsView}: java.lang.NullPointerException

ERROR/AndroidRuntime(487):     at android.app.ActivityThread.performlaunchActivity(ActivityThread.java:1647)
ERROR/AndroidRuntime(487):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
ERROR/AndroidRuntime(487):     at android.app.ActivityThread.access$1500(ActivityThread.java:117)
ERROR/AndroidRuntime(487):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
ERROR/AndroidRuntime(487):     at android.os.Handler.dispatchMessage(Handler.java:99)
ERROR/AndroidRuntime(487):     at android.os.Looper.loop(Looper.java:123)

ERROR/AndroidRuntime(487):     at android.app.ActivityThread.main(ActivityThread.java:3683)
ERROR/AndroidRuntime(487):     at java.lang.reflect.Method.invokeNative(Native Method)
ERROR/AndroidRuntime(487):     at java.lang.reflect.Method.invoke(Method.java:507)
ERROR/AndroidRuntime(487):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
ERROR/AndroidRuntime(487):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
ERROR/AndroidRuntime(487):     at dalvik.system.NativeStart.main(Native Method)
ERROR/AndroidRuntime(487): Caused by: java.lang.NullPointerException
ERROR/AndroidRuntime(487):     at training.timer.RunTrainingWorkoutsView.onCreate(RunTrainingWorkoutsView.java:72)
ERROR/AndroidRuntime(487):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
ERROR/AndroidRuntime(487):     at android.app.ActivityThread.performlaunchActivity(ActivityThread.java:1611)
ERROR/AndroidRuntime(487):     ... 11 more

解决方法:

经过3天的攻击,我的头靠在墙上,谷歌搜索,stacOverflowing等我得到了它.

实际上,这是一个愚蠢的小事……

我的XML文件,我定义了包含一些常见的android视图(即textView和按钮)的布局和我的自定义视图CounterClockView:

<training.timer.CounterClockView 
android:id="@+id/counter_clock_surface"
android:layout_width="300dp" 
android:layout_height="240dp">

我必须增加一条线!

<training.timer.CounterClockView 
    xmlns:android="http://schemas.android.com/apk/res/android"   !!!
    android:id="@+id/counter_clock_surface"
    android:layout_width="300dp" 
    android:layout_height="240dp">
</training.timer.CounterClockView>

我不知道为什么这个命名空间行产生了如此巨大的差异,但它的效果很好!

现在,我可以在CountDownTimer()的每个onTick()上从我的主要活动更新我的自定义视图…

以下答案非常有用:
findViewById() returns null for custom component in layout XML, not for other components

c# – 如何将自定义视图添加到monotouch中的XIB文件定义视图

c# – 如何将自定义视图添加到monotouch中的XIB文件定义视图

我正在尝试学习monotouch在这一刻,并跟随Mike BlueStein学习monotouch书.不是一本坏书,但是由于 xcode 4(我相信)和monotouch上的较新版本已经出现,它稍微过时了.

无论如何,在我的项目中,我有一个控制器和一个xib文件.我还有一个自定义视图(例如myview:UIView),它覆盖了绘制方法.我想在xib文件中定义的视图旁边显示我的自定义视图.我该怎么做?

在控制器中,如果我重写LoadView方法,并将View设置为我的自定义视图的一个实例,那么我可以看到它,但是我放弃了xib文件中定义的所有内容.如果我尝试添加一个子视图,它根本不显示.

我失踪了什么如果问题不明确,请问我,所以我可以澄清一下.

干杯.

解决方法

按照以下步骤在XIB中使用自定义视图:

首先,使用Registerattribute装饰视图:

[Register("MyView")]
public class MyView : UIView
{
}

并实现以下构造函数:

public MyView(IntPtr handle) : base(handle) {}

当运行时在内存警告被破坏后,运行时将尝试重新创建视图,就需要这个构造函数.创建自定义类后:

>在Xcode中打开XIB(总是通过MonoDevelop双击它),并在其中添加一个UIView.
>在Xcode中,将UIView的类设置为MyView(或将您传递给Registerattribute的任何名称):

>编译运行.

编辑:

不要为从XIB加载的控制器覆盖LoadView.当该控件的视图未从XIB加载时,LoadView旨在创建控制器的视图.

ios – Swift – 如何将Tab Bar和导航栏添加到单个视图控制器?

ios – Swift – 如何将Tab Bar和导航栏添加到单个视图控制器?

使用XCode,通过代码或通过故事板,有人可以向我解释如何添加一个tab栏和导航栏到我的视图控制器,同时保持可见?

非常感谢.

解决方法

在您的故事板中,您应该拖出一个Tab Bar控制器,并将其用作初始视图控制器.然后,您应该将附加到Tab Bar Controller的每个视图控制器嵌入到导航控制器(编辑器菜单:嵌入>导航控制器)中.之后,你的故事板应该是这样的:

标签栏控制器保存标签栏,并且将管理连接到其上的其他视图之间的切换,而导航控制器将在每个选项卡的顶部放置导航栏,并帮助您管理选项卡中的导航.

今天的关于如何在导航栏Swift右侧添加自定义视图?如何在导航栏swift右侧添加自定义视图的分享已经结束,谢谢您的关注,如果想了解更多关于android – 使用单选按钮向自定义组添加自定义视图、android – 添加自定义视图作为XML布局的视图、c# – 如何将自定义视图添加到monotouch中的XIB文件定义视图、ios – Swift – 如何将Tab Bar和导航栏添加到单个视图控制器?的相关知识,请在本站进行查询。

本文标签: