小编PLO*_*LOW的帖子

iOS TableView按钮被多次调用

我有一个带有自定义UITableViewCell的TableView.在每个单元格中,我有多个按钮,当向下滚动向上按下任何按钮时,它会自动调用多次我向下和向上滚动.

我已阅读并研究解决方案,但我还没有找到解决方案.

我知道问题是单元格正在被重用,这就是为什么按钮被多次调用但我找不到防止它的方法.

我通过代码添加了控制台写行语句,而MoveToWindow中的else部分从不调用.这可能是原因吗?

解决方案的研究材料:

我的代码在uitableview中调用了两次btndelete方法

在自定义UITableViewCell中多次调用UIButton click事件

我的代码:

namespace Class.iOS
{
    public partial class CustomCell : UITableViewCell
    {
        public static readonly NSString Key = new NSString ("CustomCell");
        public static readonly UINib Nib;
        public int Row { get; set; }
        public event EventHandler LikeButtonPressed;

        private void OnLikeButtonPressed()
        {
            if (LikeButtonPressed != null)
            {
                LikeButtonPressed(this, EventArgs.Empty);
            }
        }

        public override void MovedToWindow()
        {
            if (Window != null)
            {
                btnAdd.TouchUpInside += HandleLikeButtonPressed;
            }
            else
            {
                btnAdd.TouchUpInside -= HandleLikeButtonPressed;
            }
        }

        private void …
Run Code Online (Sandbox Code Playgroud)

c# uitableview xamarin.ios ios xamarin

5
推荐指数
1
解决办法
1015
查看次数

向后导航不会释放内存

在我的应用程序上,使用Xamarin Profiler我注意到每当我将VC推送到堆栈并导航回来时,内存分配就不是免费的.如果我再次推送相同的视图,它会增加更多内存.

我创建了一个示例项目来测试,我发现这是同样的事情.

示例项目:

我有两个视图控制器,VC1和VC2.VC1是根视图控制器.

每当我从VC1推送VC2时,就会分配内存,但是当我向后导航时,内存不是空闲的.如果我再次继续推动VC2,它会增加更多内存.在VC2中,我通过设计师添加了3个标签.

在AppDelegate中:

namespace TestSample
{
    [Register("AppDelegate")]
    public class AppDelegate : UIApplicationDelegate
    {
        public override UIWindow Window
        {
            get;
            set;
        }

        public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions)
        {
            Window = new UIWindow(UIScreen.MainScreen.Bounds);
            var nav = new UINavigationController(new MyViewController());
            Window.RootViewController = nav;
            Window.MakeKeyAndVisible();

            return true;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

VC1:

namespace TestSample
{
    public partial class MyViewController : UIViewController
    {
        public MyViewController() : base("MyViewController", null)
        {
        }

        public override void ViewDidLoad()
        {
            base.ViewDidLoad();
            // Perform any additional …
Run Code Online (Sandbox Code Playgroud)

c# memory-management xamarin.ios xamarin

1
推荐指数
1
解决办法
106
查看次数

标签 统计

c# ×2

xamarin ×2

xamarin.ios ×2

ios ×1

memory-management ×1

uitableview ×1